[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/multimedia/amarok/src
From:       Nikolaj Hald Nielsen <nhnFreespirit () gmail ! com>
Date:       2007-03-04 13:58:09
Message-ID: 1173016689.519023.14149.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 639142 by nhnielsen:

Refactor generic stuff from MagnatuneContentItem into ServiceModelItemBase to make \
handeling of adding items to the playlist generic

 M  +1 -0      CMakeLists.txt  
 M  +14 -10    servicebrowser/magnatunestore/magnatunecontentitem.cpp  
 M  +8 -6      servicebrowser/magnatunestore/magnatunecontentitem.h  
 M  +1 -1      servicebrowser/magnatunestore/magnatunecontentmodel.cpp  
 M  +26 -0     servicebrowser/servicebase.cpp  
 M  +6 -0      servicebrowser/servicebase.h  
 A             servicebrowser/servicemodelitembase.cpp   [License: no copyright]
 A             servicebrowser/servicemodelitembase.h   [License: no copyright]


--- trunk/extragear/multimedia/amarok/src/CMakeLists.txt #639141:639142
@@ -137,6 +137,7 @@
 set(libservicebrowser_SRCS
         ${CMAKE_SOURCE_DIR}/amarok/src/servicebrowser/servicebrowser.cpp
 	${CMAKE_SOURCE_DIR}/amarok/src/servicebrowser/servicebase.cpp
+	${CMAKE_SOURCE_DIR}/amarok/src/servicebrowser/servicemodelitembase.cpp
         ${CMAKE_SOURCE_DIR}/amarok/src/servicebrowser/servicemodelbase.cpp)
 
 set(libmagnatunestore_SRCS
--- trunk/extragear/multimedia/amarok/src/servicebrowser/magnatunestore/magnatunecontentitem.cpp \
#639141:639142 @@ -76,7 +76,7 @@
 
     if ( !m_hasPopulatedChildItems )
         populateChildItems();
-    return m_childItems.value(row);
+    return dynamic_cast<MagnatuneContentItem*>( m_childItems.value( row ) );
 
  }
 
@@ -84,7 +84,7 @@
  {
      if ( !m_hasPopulatedChildItems )
          populateChildItems();
-     return m_childItems.count();
+     ServiceModelItemBase::childCount();
  }
 
  int MagnatuneContentItem::columnCount() const
@@ -107,22 +107,17 @@
 
 }
 
-MagnatuneContentItem *MagnatuneContentItem::parent()
- {
-     return m_parent;
- }
-
 int MagnatuneContentItem::row() const
 {
     if (m_parent){
         if ( !m_hasPopulatedChildItems )
             populateChildItems();
-        return m_parent->GetChildItems().indexOf(const_cast<MagnatuneContentItem*>(this));
 +        return m_parent->getChildItems().indexOf(const_cast<MagnatuneContentItem*>(this));
  }
     return 0;
 } 
 
-QList<MagnatuneContentItem*> MagnatuneContentItem::GetChildItems() const {
+QList<ServiceModelItemBase*> MagnatuneContentItem::GetChildItems() const {
     if ( !m_hasPopulatedChildItems )
         populateChildItems();
 
@@ -167,4 +162,13 @@
 
 contentTypeUnion MagnatuneContentItem::getContentUnion ( ) { return m_content; }
 
-int MagnatuneContentItem::getType()  { return m_type; }
\ No newline at end of file
+int MagnatuneContentItem::getType()  { return m_type; }
+
+QString MagnatuneContentItem::getUrl() {
+
+    if ( m_type == MAGNATUNE_TRACK ) {
+        return m_content.trackValue->getHifiURL();
+    } else {
+        return QString();
+    }
+}
\ No newline at end of file
--- trunk/extragear/multimedia/amarok/src/servicebrowser/magnatunestore/magnatunecontentitem.h \
#639141:639142 @@ -21,6 +21,7 @@
 #ifndef AMAROKMAGNATUENTREEITEM_H
 #define AMAROKMAGNATUENTREEITEM_H
 
+#include "../servicemodelitembase.h"
 #include "magnatunetypes.h"
 
 #include <QList>
@@ -35,7 +36,7 @@
     MagnatuneTrack * trackValue;
 };
 
-class MagnatuneContentItem
+class MagnatuneContentItem : public ServiceModelItemBase
 {
 public:
     MagnatuneContentItem( MagnatuneArtist content, QString genre, \
MagnatuneContentItem *parent ); @@ -52,15 +53,16 @@
     int columnCount() const;
     QVariant data(int column) const;
     int row() const;
-    MagnatuneContentItem * parent();
+    /*MagnatuneContentItem * parent();*/
     int getType();
-    QList<MagnatuneContentItem*> GetChildItems() const;
-    bool hasChildren () const ;
+    QList<ServiceModelItemBase*> GetChildItems() const;
+    bool hasChildren () const;
     contentTypeUnion getContentUnion ( );
+    QString getUrl();
 
 private:
 
-    mutable QList<MagnatuneContentItem*> m_childItems;
+    /*mutable QList<MagnatuneContentItem*> m_childItems;*/
 
     contentTypeUnion m_content; 
     QString m_genre;
@@ -68,7 +70,7 @@
     int m_type;
     mutable bool m_hasPopulatedChildItems;
 
-    MagnatuneContentItem *m_parent;
+    /*MagnatuneContentItem *m_parent;*/
 
     void populateChildItems() const;
 };
--- trunk/extragear/multimedia/amarok/src/servicebrowser/magnatunestore/magnatunecontentmodel.cpp \
#639141:639142 @@ -122,7 +122,7 @@
      }
 
      MagnatuneContentItem *childItem = \
                static_cast<MagnatuneContentItem*>(index.internalPointer());
-     MagnatuneContentItem *parentItem = childItem->parent();
+     MagnatuneContentItem *parentItem = \
static_cast<MagnatuneContentItem*>(childItem->parent() );  
      if (parentItem == m_rootContentItem)
          //debug() << "MagnatuneContentModel::parent, root item... " << endl; 
--- trunk/extragear/multimedia/amarok/src/servicebrowser/servicebase.cpp \
#639141:639142 @@ -21,6 +21,7 @@
 
 #include "amarok.h"
 #include "debug.h"
+#include "playlist.h"
 
 #include <khbox.h>
 
@@ -150,8 +151,33 @@
     emit( home() );
 }
 
+void ServiceBase::itemActivated ( const QModelIndex & index ) {
 
+    if (!index.isValid())
+        return;
+    else {
+       ServiceModelItemBase * item = \
static_cast<ServiceModelItemBase*>(index.internalPointer()); +       addToPlaylist( \
item ); +    }
 
+ }
 
+void ServiceBase::addToPlaylist( ServiceModelItemBase * item ) {
+    
+    if (! item->hasChildren() ) {
+        QString url = item->getUrl();
+        if ( !url.isEmpty() ) {
+            Playlist * playlist = Playlist::instance();
+            playlist->insertMedia( KUrl( url ) );
+        }
+    } else {
+        QList<ServiceModelItemBase*> childItems = item->getChildItems();
+        for (int i = 0; i < childItems.size(); ++i) {
+            addToPlaylist( childItems.at(i) );
+        }
+    }
+}
 
+
+
 #include "servicebase.moc"
--- trunk/extragear/multimedia/amarok/src/servicebrowser/servicebase.h #639141:639142
@@ -22,6 +22,7 @@
 
 
 #include "amarok.h"
+#include "servicemodelitembase.h"
 
 #include <khtml_part.h>
 //#include <klistwidget.h>
@@ -79,6 +80,9 @@
 
     void homeButtonClicked();
 
+    void itemActivated ( const QModelIndex & index );
+
+
 protected:
 
     
@@ -101,6 +105,8 @@
     QString      m_longDescription;
     QIcon        m_icon;
 
+    void addToPlaylist( ServiceModelItemBase * item );
+
 };
 
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic