From 3a805cbe673ececbba79605be7676633dfc4f8fa Mon Sep 17 00:00:00 2001
From: Teo Mrnjavac <teo@kde.org>
Date: Thu, 24 Jan 2013 19:31:40 +0100
Subject: [PATCH] Have collections provide some strings of their own.

---
 src/libtomahawk/Collection.cpp                 | 16 +++++++++++++++-
 src/libtomahawk/Collection.h                   |  2 ++
 src/libtomahawk/ViewManager.cpp                |  6 ++----
 src/libtomahawk/database/LocalCollection.cpp   | 14 ++++++++++++++
 src/libtomahawk/database/LocalCollection.h     |  3 +++
 src/libtomahawk/network/RemoteCollection.cpp   |  7 +++++++
 src/libtomahawk/network/RemoteCollection.h     |  2 ++
 src/libtomahawk/playlist/TreeModel.cpp         |  5 +----
 src/libtomahawk/resolvers/ScriptCollection.cpp | 14 ++++++++++++++
 src/libtomahawk/resolvers/ScriptCollection.h   |  1 +
 src/sourcetree/items/SourceItem.cpp            |  2 +-
 11 files changed, 62 insertions(+), 10 deletions(-)

diff --git a/src/libtomahawk/Collection.cpp b/src/libtomahawk/Collection.cpp
index a71c80d96..06d4a98bc 100644
--- a/src/libtomahawk/Collection.cpp
+++ b/src/libtomahawk/Collection.cpp
@@ -64,10 +64,24 @@ Collection::prettyName() const
 }
 
 
+QString
+Collection::itemName() const
+{
+    return tr( "Collection" );
+}
+
+
 QIcon
 Collection::icon() const
 {
-     return ImageRegistry::instance()->icon( RESPATH "images/collection.svg" );
+    return ImageRegistry::instance()->icon( RESPATH "images/collection.svg" );
+}
+
+
+QString
+Collection::emptyText() const
+{
+    return  tr( "This collection is empty." );
 }
 
 
diff --git a/src/libtomahawk/Collection.h b/src/libtomahawk/Collection.h
index b041540c6..b3ed5b07e 100644
--- a/src/libtomahawk/Collection.h
+++ b/src/libtomahawk/Collection.h
@@ -52,8 +52,10 @@ public:
 
     virtual QString name() const;
     virtual QString prettyName() const;
+    virtual QString itemName() const;
     virtual QString type() const { return QString(); }
     virtual QIcon icon() const;
+    virtual QString emptyText() const;
 
     virtual void loadPlaylists() { qDebug() << Q_FUNC_INFO; }
     virtual void loadAutoPlaylists() { qDebug() << Q_FUNC_INFO; }
diff --git a/src/libtomahawk/ViewManager.cpp b/src/libtomahawk/ViewManager.cpp
index 58a303056..e1a9e2b18 100644
--- a/src/libtomahawk/ViewManager.cpp
+++ b/src/libtomahawk/ViewManager.cpp
@@ -278,10 +278,8 @@ ViewManager::show( const Tomahawk::collection_ptr& collection )
         TreeModel* model = new TreeModel();
         view->setTreeModel( model );
 
-        if ( collection && collection->source()->isLocal() )
-            view->setEmptyTip( tr( "After you have scanned your music collection you will find your tracks right here." ) );
-        else
-            view->setEmptyTip( tr( "This collection is empty." ) );
+        if ( !collection.isNull() )
+            view->setEmptyTip( collection->emptyText() );
 
         model->addCollection( collection );
 
diff --git a/src/libtomahawk/database/LocalCollection.cpp b/src/libtomahawk/database/LocalCollection.cpp
index 05bc5318d..0448aa5f4 100644
--- a/src/libtomahawk/database/LocalCollection.cpp
+++ b/src/libtomahawk/database/LocalCollection.cpp
@@ -36,6 +36,20 @@ LocalCollection::LocalCollection( const Tomahawk::source_ptr& source, QObject* p
 }
 
 
+QString
+LocalCollection::prettyName() const
+{
+    return tr( "My Collection" );
+}
+
+
+QString
+LocalCollection::emptyText() const
+{
+    return tr( "After you have scanned your music collection you will find your tracks right here." );
+}
+
+
 Tomahawk::playlist_ptr
 LocalCollection::bookmarksPlaylist()
 {
diff --git a/src/libtomahawk/database/LocalCollection.h b/src/libtomahawk/database/LocalCollection.h
index 80e212a1d..4d4ae8960 100644
--- a/src/libtomahawk/database/LocalCollection.h
+++ b/src/libtomahawk/database/LocalCollection.h
@@ -30,6 +30,9 @@ class DLLEXPORT LocalCollection : public DatabaseCollection
 public:
     explicit LocalCollection( const Tomahawk::source_ptr& source, QObject* parent = 0 );
 
+    virtual QString prettyName() const;
+    virtual QString emptyText() const;
+
     // gets the playlist used for storing stuff from the web, if it already exists. if the returned playlist
     // is invalid ask to create and listen to the signal
     Tomahawk::playlist_ptr bookmarksPlaylist();
diff --git a/src/libtomahawk/network/RemoteCollection.cpp b/src/libtomahawk/network/RemoteCollection.cpp
index ec9af8918..0a0ad7c3f 100644
--- a/src/libtomahawk/network/RemoteCollection.cpp
+++ b/src/libtomahawk/network/RemoteCollection.cpp
@@ -30,6 +30,13 @@ RemoteCollection::RemoteCollection( source_ptr source, QObject* parent )
 }
 
 
+QString
+RemoteCollection::prettyName() const
+{
+    return tr( "Collection of %1" ).arg( source()->friendlyName() );
+}
+
+
 // adding/removing is done by dbsyncconnection, and the dbcmd objects that modify
 // the database will make us emit the appropriate signals (tracksAdded etc.)
 void
diff --git a/src/libtomahawk/network/RemoteCollection.h b/src/libtomahawk/network/RemoteCollection.h
index 8b75c9c93..16ef70f7e 100644
--- a/src/libtomahawk/network/RemoteCollection.h
+++ b/src/libtomahawk/network/RemoteCollection.h
@@ -37,6 +37,8 @@ public:
         qDebug() << Q_FUNC_INFO;
     }
 
+    virtual QString prettyName() const;
+
 public slots:
     virtual void addTracks( const QList<QVariant>& newitems );
     virtual void removeTracks( const QDir& dir );
diff --git a/src/libtomahawk/playlist/TreeModel.cpp b/src/libtomahawk/playlist/TreeModel.cpp
index d8e0a5192..2c6ce8cb1 100644
--- a/src/libtomahawk/playlist/TreeModel.cpp
+++ b/src/libtomahawk/playlist/TreeModel.cpp
@@ -262,10 +262,7 @@ TreeModel::addCollection( const collection_ptr& collection )
     if ( !collection->source()->avatar().isNull() )
         setIcon( collection->source()->avatar( TomahawkUtils::RoundedCorners ) );
 
-    if ( collection->source()->isLocal() )
-        setTitle( tr( "My Collection" ) );
-    else
-        setTitle( tr( "Collection of %1" ).arg( collection->source()->friendlyName() ) );
+    setTitle( collection->prettyName() );
 }
 
 
diff --git a/src/libtomahawk/resolvers/ScriptCollection.cpp b/src/libtomahawk/resolvers/ScriptCollection.cpp
index ad5283565..c57f5b9c7 100644
--- a/src/libtomahawk/resolvers/ScriptCollection.cpp
+++ b/src/libtomahawk/resolvers/ScriptCollection.cpp
@@ -47,6 +47,20 @@ ScriptCollection::~ScriptCollection()
 
 QString
 ScriptCollection::prettyName() const
+{
+    if ( source()->isLocal() )
+        return tr( "My %1 Collection",
+                   "Name of a collection based on a resolver, e.g. My Subsonic Collection" )
+                .arg( m_resolver->name() );
+    return tr( "%1 Collection of %2",
+               "Name of a collection based on a resolver, e.g. Subsonic Collection of Some Dude" )
+            .arg( m_resolver->name() )
+            .arg( source()->friendlyName() );
+}
+
+
+QString
+ScriptCollection::itemName() const
 {
     return tr( "%1 Collection",
                "Name of a collection based on a resolver, e.g. Subsonic Collection" )
diff --git a/src/libtomahawk/resolvers/ScriptCollection.h b/src/libtomahawk/resolvers/ScriptCollection.h
index e8f846837..53b9a6ca2 100644
--- a/src/libtomahawk/resolvers/ScriptCollection.h
+++ b/src/libtomahawk/resolvers/ScriptCollection.h
@@ -41,6 +41,7 @@ public:
     virtual ~ScriptCollection();
 
     virtual QString prettyName() const;
+    virtual QString itemName() const;
     virtual QString type() const { return "scriptcollection"; }
     virtual QIcon icon() const;
 
diff --git a/src/sourcetree/items/SourceItem.cpp b/src/sourcetree/items/SourceItem.cpp
index f3519b61e..16f544f74 100644
--- a/src/sourcetree/items/SourceItem.cpp
+++ b/src/sourcetree/items/SourceItem.cpp
@@ -371,7 +371,7 @@ SourceItem::performAddCollectionItem( const collection_ptr& collection )
 {
     GenericPageItem* item = new GenericPageItem( model(),
                                                  this,
-                                                 collection->prettyName(),
+                                                 collection->itemName(),
                                                  collection->icon(),
                                                  boost::bind( &SourceItem::collectionClicked, this, collection ),
                                                  boost::bind( &SourceItem::getCollectionPage, this, collection ) );