diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0672c18d1..c7d796702 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -176,6 +176,7 @@ if(NOT Qt5Core_DIR)
set(QT_USE_QTNETWORK TRUE)
set(QT_USE_QTXML TRUE)
set(QT_USE_QTWEBKIT TRUE)
+ set(QT_USE_QTDECLARATIVE TRUE)
include( ${QT_USE_FILE} )
endmacro()
diff --git a/TomahawkUse.cmake b/TomahawkUse.cmake
index 503ba8d7d..8b465457d 100644
--- a/TomahawkUse.cmake
+++ b/TomahawkUse.cmake
@@ -1,11 +1,11 @@
#FIXME: this only handles qt4 and duplicates top level cmakelists: how can we reduce code duplication?
-find_package(Qt4 COMPONENTS QtNetwork QtCore QtGui QtSql REQUIRED)
+find_package(Qt4 COMPONENTS QtNetwork QtCore QtGui QtSql QtDeclarative REQUIRED)
include( ${QT_USE_FILE} )
-set(NEEDED_QT4_COMPONENTS "QtCore" "QtXml" "QtNetwork")
+set(NEEDED_QT4_COMPONENTS "QtCore" "QtXml" "QtNetwork" "QtDeclarative")
if(BUILD_GUI)
- list(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" "QtUiTools" "QtSvg")
+ list(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" "QtUiTools" "QtSvg" "QtDeclarative")
endif()
find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS})
diff --git a/resources.qrc b/resources.qrc
index 2b69fa96b..5c0708890 100644
--- a/resources.qrc
+++ b/resources.qrc
@@ -90,6 +90,28 @@
data/images/star-unstarred.svg
data/images/apply-check.svg
data/stylesheets/topbar-radiobuttons.css
+ data/qml/tomahawkimports/CoverImage.qml
+ data/qml/tomahawkimports/ArtistView.qml
+ data/qml/tomahawkimports/HeaderLabel.qml
+ data/qml/tomahawkimports/TagCloud.qml
+ data/qml/tomahawkimports/ScrollBar.qml
+ data/qml/tomahawkimports/InputField.qml
+ data/qml/tomahawkimports/Button.qml
+ data/qml/tomahawkimports/DoubleSlider.qml
+ data/qml/tomahawkimports/RoundedButton.qml
+ data/qml/tomahawkimports/PushButton.qml
+ data/qml/tomahawkimports/CoverFlip.qml
+ data/qml/tomahawkimports/BusyIndicator.qml
+ data/qml/StationView.qml
+ data/qml/stations/StationCreatorPage1.qml
+ data/qml/stations/StationCreatorPage2.qml
+ data/qml/stations/CreateByArtist.qml
+ data/qml/stations/StationConfig.qml
+ data/qml/QmlGridView.qml
+ data/qml/stations/CreateByGenre.qml
+ data/qml/tomahawkimports/FlexibleHeader.qml
+ data/qml/tomahawkimports/ToggleViewButtons.qml
+ data/qml/DeclarativeHeader.qml
data/icons/tomahawk-icon-16x16.png
data/icons/tomahawk-icon-32x32.png
data/icons/tomahawk-icon-64x64.png
@@ -152,5 +174,11 @@
data/images/refresh.svg
data/images/inbox.svg
data/images/new-inbox.svg
+ data/images/inputfield-border.svg
+ data/images/search-box-dismiss-x.svg
+ data/images/loading-animation.svg
+ data/images/station-artist.svg
+ data/images/station-genre.svg
+ data/images/station-year.svg
diff --git a/src/TomahawkApp.cpp b/src/TomahawkApp.cpp
index b623924e3..8bee7cfc7 100644
--- a/src/TomahawkApp.cpp
+++ b/src/TomahawkApp.cpp
@@ -39,7 +39,7 @@
#include "database/DatabaseResolver.h"
#include "playlist/dynamic/GeneratorFactory.h"
#include "playlist/dynamic/echonest/EchonestGenerator.h"
-#include "playlist/dynamic/database/DatabaseGenerator.h"
+//#include "playlist/dynamic/database/DatabaseGenerator.h"
#include "playlist/XspfUpdater.h"
#include "network/Servent.h"
#include "web/Api_v1.h"
@@ -219,8 +219,8 @@ TomahawkApp::init()
tDebug() << "Init Echonest Factory.";
GeneratorFactory::registerFactory( "echonest", new EchonestFactory );
#endif
- tDebug() << "Init Database Factory.";
- GeneratorFactory::registerFactory( "database", new DatabaseFactory );
+/* tDebug() << "Init Database Factory.";
+ GeneratorFactory::registerFactory( "database", new DatabaseFactory );*/
// Register shortcut handler for this platform
#ifdef Q_WS_MAC
diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt
index e02f9f503..6eb4f0b11 100644
--- a/src/libtomahawk/CMakeLists.txt
+++ b/src/libtomahawk/CMakeLists.txt
@@ -77,19 +77,21 @@ set( libGuiSources
playlist/PlayableItem.cpp
playlist/SingleTrackPlaylistInterface.cpp
+ playlist/dynamic/GeneratorInterface.cpp
playlist/dynamic/DynamicPlaylist.cpp
playlist/dynamic/DynamicView.cpp
playlist/dynamic/DynamicModel.cpp
playlist/dynamic/echonest/EchonestGenerator.cpp
playlist/dynamic/echonest/EchonestControl.cpp
- playlist/dynamic/echonest/EchonestSteerer.cpp
- playlist/dynamic/widgets/DynamicWidget.cpp
+# playlist/dynamic/echonest/EchonestSteerer.cpp
+# playlist/dynamic/widgets/DynamicWidget.cpp
+ playlist/dynamic/widgets/DynamicQmlWidget.cpp
playlist/dynamic/widgets/DynamicControlWrapper.cpp
- playlist/dynamic/widgets/DynamicControlList.cpp
+# playlist/dynamic/widgets/DynamicControlList.cpp
playlist/dynamic/widgets/ReadOrWriteWidget.cpp
playlist/dynamic/widgets/MiscControlWidgets.cpp
- playlist/dynamic/widgets/CollapsibleControls.cpp
- playlist/dynamic/widgets/DynamicSetupWidget.cpp
+# playlist/dynamic/widgets/CollapsibleControls.cpp
+# playlist/dynamic/widgets/DynamicSetupWidget.cpp
resolvers/ExternalResolverGui.cpp
resolvers/ScriptResolver.cpp
@@ -121,6 +123,8 @@ set( libGuiSources
utils/ResultUrlChecker.cpp
utils/NetworkReply.cpp
+ widgets/DeclarativeCoverArtProvider.cpp
+ widgets/DeclarativeView.cpp
widgets/AnimatedCounterLabel.cpp
widgets/BasicHeader.cpp
widgets/FilterHeader.cpp
@@ -314,7 +318,7 @@ list(APPEND libSources
playlist/dynamic/GeneratorInterface.cpp
playlist/dynamic/DynamicPlaylistRevision.cpp
playlist/XspfUpdater.cpp
- playlist/dynamic/database/DatabaseGenerator.cpp
+# playlist/dynamic/database/DatabaseGenerator.cpp
playlist/dynamic/database/DatabaseControl.cpp
playlist/dynamic/DynamicControl.cpp
@@ -497,6 +501,7 @@ TARGET_LINK_LIBRARIES( tomahawklib
${QT_QTXML_LIBRARY}
${QT_QTSVG_LIBRARY}
${QT_QTCORE_LIBRARY}
+ ${QT_QTDECLARATIVE_LIBRARY}
${OS_SPECIFIC_LINK_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${LINK_LIBRARIES}
diff --git a/src/libtomahawk/ViewManager.cpp b/src/libtomahawk/ViewManager.cpp
index f382c93e9..688b29966 100644
--- a/src/libtomahawk/ViewManager.cpp
+++ b/src/libtomahawk/ViewManager.cpp
@@ -42,7 +42,8 @@
#include "playlist/InboxView.h"
#include "playlist/PlaylistLargeItemDelegate.h"
#include "playlist/RecentlyPlayedModel.h"
-#include "playlist/dynamic/widgets/DynamicWidget.h"
+//#include "playlist/dynamic/widgets/DynamicWidget.h"
+#include "playlist/dynamic/widgets/DynamicQmlWidget.h"
#include "widgets/NewReleasesWidget.h"
#include "widgets/WelcomeWidget.h"
@@ -193,8 +194,8 @@ ViewManager::playlistForPage( ViewPage* page ) const
{
p = dynamic_cast< PlaylistView* >( page )->playlistModel()->playlist();
}
- else if ( dynamic_cast< DynamicWidget* >( page ) )
- p = dynamic_cast< DynamicWidget* >( page )->playlist();
+ else if ( dynamic_cast< DynamicQmlWidget* >( page ) )
+ p = dynamic_cast< DynamicQmlWidget* >( page )->playlist();
return p;
}
@@ -228,7 +229,7 @@ ViewManager::show( const Tomahawk::dynplaylist_ptr& playlist )
{
if ( !m_dynamicWidgets.contains( playlist ) || m_dynamicWidgets.value( playlist ).isNull() )
{
- m_dynamicWidgets[ playlist ] = new Tomahawk::DynamicWidget( playlist, m_stack );
+ m_dynamicWidgets[ playlist ] = new Tomahawk::DynamicQmlWidget( playlist, m_stack );
playlist->resolve();
}
@@ -816,7 +817,7 @@ ViewManager::playlistForInterface( Tomahawk::playlistinterface_ptr interface ) c
Tomahawk::dynplaylist_ptr
ViewManager::dynamicPlaylistForInterface( Tomahawk::playlistinterface_ptr interface ) const
{
- foreach ( QPointer view, m_dynamicWidgets.values() )
+ foreach ( QPointer view, m_dynamicWidgets.values() )
{
if ( !view.isNull() && view.data()->playlistInterface() == interface )
{
diff --git a/src/libtomahawk/ViewManager.h b/src/libtomahawk/ViewManager.h
index fb6f08bc6..7cc46c443 100644
--- a/src/libtomahawk/ViewManager.h
+++ b/src/libtomahawk/ViewManager.h
@@ -59,7 +59,7 @@ class InboxModel;
namespace Tomahawk
{
- class DynamicWidget;
+ class DynamicQmlWidget;
}
class DLLEXPORT ViewManager : public QObject
@@ -195,7 +195,7 @@ private:
QList< Tomahawk::collection_ptr > m_superCollections;
- QHash< Tomahawk::dynplaylist_ptr, QPointer > m_dynamicWidgets;
+ QHash< Tomahawk::dynplaylist_ptr, QPointer > m_dynamicWidgets;
QHash< Tomahawk::collection_ptr, QPointer > m_treeWidgets;
QHash< Tomahawk::artist_ptr, QPointer > m_artistViews;
QHash< Tomahawk::album_ptr, QPointer > m_albumViews;