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

List:       kde-commits
Subject:    [plasma-mediacenter] /: Categorize backends
From:       Shantanu Tushar <shaan7in () gmail ! com>
Date:       2012-07-28 15:15:56
Message-ID: 20120728151556.6A6A3A6094 () git ! kde ! org
[Download RAW message or body]

Git commit 8f1efbf28c407c37a822fd7672e9f0c0a21ed27b by Shantanu Tushar.
Committed on 20/07/2012 at 19:33.
Pushed by sinnykumari into branch 'master'.

Categorize backends

M  +1    -2    browsingbackends/localfiles/localfilesabstractbackend.h
M  +4    -0    browsingbackends/localfiles/localmusic/localmusicbackend.cpp
M  +1    -0    browsingbackends/localfiles/localmusic/localmusicbackend.h
M  +5    -0    browsingbackends/localfiles/localpictures/localpicturesbackend.cpp
 M  +1    -0    browsingbackends/localfiles/localpictures/localpicturesbackend.h
 M  +5    -0    browsingbackends/localfiles/localvideos/localvideosbackend.cpp
 M  +1    -0    browsingbackends/localfiles/localvideos/localvideosbackend.h
 M  +5    -0    browsingbackends/metadatabackends/metadatamusicbackend/metadatamusicbackend.cpp
 M  +1    -0    browsingbackends/metadatabackends/metadatamusicbackend/metadatamusicbackend.h
 M  +4    -0    browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.cpp
 M  +1    -0    browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.h
 M  +4    -0    browsingbackends/metadatabackends/metadatavideobackend/metadatavideobackend.cpp
 M  +1    -0    browsingbackends/metadatabackends/metadatavideobackend/metadatavideobackend.h
 M  +1    -0    libs/mediacenter/CMakeLists.txt
M  +13   -0    libs/mediacenter/abstractbrowsingbackend.h
M  +3    -0    libs/mediacenter/backendsmodel.cpp
M  +2    -1    libs/mediacenter/backendsmodel.h
C  +30   -16   libs/mediacenter/filteredbackendsmodel.cpp [from: \
browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.cpp \
- 053% similarity] C  +20   -22   libs/mediacenter/filteredbackendsmodel.h \
[from: libs/mediacenter/backendsmodel.h - 059% similarity] M  +3    -0    \
shells/newshell/mainwindow.cpp M  +6    -1    \
shells/newshell/package/contents/ui/mediacenter.qml

http://commits.kde.org/plasma-mediacenter/8f1efbf28c407c37a822fd7672e9f0c0a21ed27b


diff --git a/browsingbackends/localfiles/localfilesabstractbackend.h \
b/browsingbackends/localfiles/localfilesabstractbackend.h index \
                93b2d71..b9afcf8 100644
--- a/browsingbackends/localfiles/localfilesabstractbackend.h
+++ b/browsingbackends/localfiles/localfilesabstractbackend.h
@@ -21,8 +21,7 @@
 #ifndef LOCALFILESABSTRACTBACKEND_H
 #define LOCALFILESABSTRACTBACKEND_H
 
-#include <mediacenter/abstractbrowsingbackend.h>
-
+#include <libs/mediacenter/abstractbrowsingbackend.h>
 
 class LocalFilesAbstractBackend : public \
MediaCenter::AbstractBrowsingBackend  {
diff --git a/browsingbackends/localfiles/localmusic/localmusicbackend.cpp \
b/browsingbackends/localfiles/localmusic/localmusicbackend.cpp index \
                9bb13f1..d06881c 100644
--- a/browsingbackends/localfiles/localmusic/localmusicbackend.cpp
+++ b/browsingbackends/localfiles/localmusic/localmusicbackend.cpp
@@ -36,3 +36,7 @@ void LocalMusicBackend::initModel()
     setModel(new LocalMusicModel(this));
 }
 
+QString LocalMusicBackend::backendCategory() const
+{
+    return "music";
+}
diff --git a/browsingbackends/localfiles/localmusic/localmusicbackend.h \
b/browsingbackends/localfiles/localmusic/localmusicbackend.h index \
                d167f41..a49436d 100644
--- a/browsingbackends/localfiles/localmusic/localmusicbackend.h
+++ b/browsingbackends/localfiles/localmusic/localmusicbackend.h
@@ -27,6 +27,7 @@ class LocalMusicBackend : public \
LocalFilesAbstractBackend  public:
     LocalMusicBackend(QObject *parent, const QVariantList &args);
     ~LocalMusicBackend();
+    virtual QString backendCategory() const;
 
 protected:
     virtual void initModel();
diff --git a/browsingbackends/localfiles/localpictures/localpicturesbackend.cpp \
b/browsingbackends/localfiles/localpictures/localpicturesbackend.cpp index \
                3090ace..861a9fa 100644
--- a/browsingbackends/localfiles/localpictures/localpicturesbackend.cpp
+++ b/browsingbackends/localfiles/localpictures/localpicturesbackend.cpp
@@ -34,3 +34,8 @@ void LocalPicturesBackend::initModel()
 {
     setModel(new LocalPicturesModel(this));
 }
+
+QString LocalPicturesBackend::backendCategory() const
+{
+    return "image";
+}
diff --git a/browsingbackends/localfiles/localpictures/localpicturesbackend.h \
b/browsingbackends/localfiles/localpictures/localpicturesbackend.h index \
                c8dd8f1..a5655cd 100644
--- a/browsingbackends/localfiles/localpictures/localpicturesbackend.h
+++ b/browsingbackends/localfiles/localpictures/localpicturesbackend.h
@@ -27,6 +27,7 @@ class LocalPicturesBackend : public \
LocalFilesAbstractBackend  public:
     LocalPicturesBackend(QObject *parent, const QVariantList &args);
     ~LocalPicturesBackend();
+    virtual QString backendCategory() const;
 
 protected:
     virtual void initModel();
diff --git a/browsingbackends/localfiles/localvideos/localvideosbackend.cpp \
b/browsingbackends/localfiles/localvideos/localvideosbackend.cpp index \
                b4a9cf0..cbf354b 100644
--- a/browsingbackends/localfiles/localvideos/localvideosbackend.cpp
+++ b/browsingbackends/localfiles/localvideos/localvideosbackend.cpp
@@ -34,3 +34,8 @@ void LocalVideosBackend::initModel()
 {
     setModel(new LocalVideosModel(this));
 }
+
+QString LocalVideosBackend::backendCategory() const
+{
+    return "video";
+}
diff --git a/browsingbackends/localfiles/localvideos/localvideosbackend.h \
b/browsingbackends/localfiles/localvideos/localvideosbackend.h index \
                896f7e0..132ec64 100644
--- a/browsingbackends/localfiles/localvideos/localvideosbackend.h
+++ b/browsingbackends/localfiles/localvideos/localvideosbackend.h
@@ -27,6 +27,7 @@ class LocalVideosBackend : public \
LocalFilesAbstractBackend  public:
     LocalVideosBackend(QObject *parent, const QVariantList &args);
     ~LocalVideosBackend();
+    virtual QString backendCategory() const;
 
 protected:
     virtual void initModel();
diff --git a/browsingbackends/metadatabackends/metadatamusicbackend/metadatamusicbackend.cpp \
b/browsingbackends/metadatabackends/metadatamusicbackend/metadatamusicbackend.cpp
 index 5d93741..f8bdf78 100644
--- a/browsingbackends/metadatabackends/metadatamusicbackend/metadatamusicbackend.cpp
                
+++ b/browsingbackends/metadatabackends/metadatamusicbackend/metadatamusicbackend.cpp
 @@ -129,4 +129,9 @@ QObject* MetadataMusicBackend::musicModel() const
     return m_musicModel;
 }
 
+QString MetadataMusicBackend::backendCategory() const
+{
+    return "music";
+}
+
 #include "metadatamusicbackend.moc"
diff --git a/browsingbackends/metadatabackends/metadatamusicbackend/metadatamusicbackend.h \
b/browsingbackends/metadatabackends/metadatamusicbackend/metadatamusicbackend.h
 index a357483..b2296e8 100644
--- a/browsingbackends/metadatabackends/metadatamusicbackend/metadatamusicbackend.h
                
+++ b/browsingbackends/metadatabackends/metadatamusicbackend/metadatamusicbackend.h
 @@ -44,6 +44,7 @@ public:
     virtual ~MetadataMusicBackend();
 
     virtual void init();
+    virtual QString backendCategory() const;
 
     virtual QString mediaBrowserOverride() const;
 
diff --git a/browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.cpp \
b/browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.cpp
 index e29d887..fb100ba 100644
--- a/browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.cpp
                
+++ b/browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.cpp
 @@ -45,5 +45,9 @@ void MetadataPictureBackend::init()
     }
 }
 
+QString MetadataPictureBackend::backendCategory() const
+{
+    return "image";
+}
 
 #include "metadatapicturebackend.moc"
diff --git a/browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.h \
b/browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.h
 index a4fea9d..977b856 100644
--- a/browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.h
                
+++ b/browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.h
 @@ -31,6 +31,7 @@ class MetadataPictureBackend : public \
AbstractMetadataBackend  public:
     MetadataPictureBackend (QObject* parent, const QVariantList& args);
     virtual ~MetadataPictureBackend();
+    virtual QString backendCategory() const;
 
 public Q_SLOTS:
     virtual void init();
diff --git a/browsingbackends/metadatabackends/metadatavideobackend/metadatavideobackend.cpp \
b/browsingbackends/metadatabackends/metadatavideobackend/metadatavideobackend.cpp
 index c02b148..82e7a49 100644
--- a/browsingbackends/metadatabackends/metadatavideobackend/metadatavideobackend.cpp
                
+++ b/browsingbackends/metadatabackends/metadatavideobackend/metadatavideobackend.cpp
 @@ -45,5 +45,9 @@ void MetadataVideoBackend::init()
     }
 }
 
+QString MetadataVideoBackend::backendCategory() const
+{
+    return "video";
+}
 
 #include "metadatavideobackend.moc"
diff --git a/browsingbackends/metadatabackends/metadatavideobackend/metadatavideobackend.h \
b/browsingbackends/metadatabackends/metadatavideobackend/metadatavideobackend.h
 index 0a1c8f5..e900dd1 100644
--- a/browsingbackends/metadatabackends/metadatavideobackend/metadatavideobackend.h
                
+++ b/browsingbackends/metadatabackends/metadatavideobackend/metadatavideobackend.h
 @@ -31,6 +31,7 @@ class MetadataVideoBackend : public \
AbstractMetadataBackend  public:
     MetadataVideoBackend (QObject* parent, const QVariantList& args);
     virtual ~MetadataVideoBackend();
+    virtual QString backendCategory() const;
 
 public Q_SLOTS:
     virtual void init();
diff --git a/libs/mediacenter/CMakeLists.txt \
b/libs/mediacenter/CMakeLists.txt index b275861..8617470 100644
--- a/libs/mediacenter/CMakeLists.txt
+++ b/libs/mediacenter/CMakeLists.txt
@@ -1,4 +1,5 @@
 set (plasmamediacenter_SRCS
+    filteredbackendsmodel.cpp
     mediacenter.cpp
     abstractbrowsingbackend.cpp
     backendsmodel.cpp
diff --git a/libs/mediacenter/abstractbrowsingbackend.h \
b/libs/mediacenter/abstractbrowsingbackend.h index 4661c37..8067c3a 100644
--- a/libs/mediacenter/abstractbrowsingbackend.h
+++ b/libs/mediacenter/abstractbrowsingbackend.h
@@ -205,8 +205,21 @@ public:
      */
     Q_INVOKABLE virtual bool supportsSearch() const;
 
+    /**
+     * This method is called by the UI when the user requests to search \
for a media +     *
+     * @param searchTerm string entered by the user
+     */
     Q_INVOKABLE virtual void search(const QString &searchTerm);
 
+    /**
+     * This method is called by the PMC runtime to find out which category \
should +     * this backend be placed in
+     *
+     * @return one of these strings - "music", "image", "video", "other"
+     */
+    Q_INVOKABLE virtual QString backendCategory() const = 0;
+
 signals:
     void modelChanged();
     void metadataModelChanged();
diff --git a/libs/mediacenter/backendsmodel.cpp \
b/libs/mediacenter/backendsmodel.cpp index 3a59476..99c4e21 100644
--- a/libs/mediacenter/backendsmodel.cpp
+++ b/libs/mediacenter/backendsmodel.cpp
@@ -38,6 +38,7 @@ BackendsModel::BackendsModel (QDeclarativeEngine* engine, \
QObject* parent) : QAb  
     QHash<int, QByteArray> roles = roleNames();
     roles[ModelObjectRole] = "modelObject";
+    roles[BackendCategoryRole] = "backendCategory";
     setRoleNames(roles);
 }
 
@@ -71,6 +72,8 @@ QVariant BackendsModel::data (const QModelIndex& index, \
int role) const  return backends.at(index.row())->name();
         case Qt::DecorationRole:
             return backends.at(index.row())->icon();
+        case BackendCategoryRole:
+            return backends.at(index.row())->backendCategory();
         case ModelObjectRole:
             QVariant ptr;
             ptr.setValue(qobject_cast<QObject*>(backends.at(index.row())));
                
diff --git a/libs/mediacenter/backendsmodel.h \
b/libs/mediacenter/backendsmodel.h index ed253a2..2df9285 100644
--- a/libs/mediacenter/backendsmodel.h
+++ b/libs/mediacenter/backendsmodel.h
@@ -35,7 +35,8 @@ class MEDIACENTER_EXPORT BackendsModel : public \
QAbstractListModel  Q_OBJECT
 public:
     enum Roles {
-        ModelObjectRole = Qt::UserRole + 1
+        ModelObjectRole = Qt::UserRole + 1,
+        BackendCategoryRole
     };
 
     explicit BackendsModel (QDeclarativeEngine *engine, QObject* parent = \
                0);
diff --git a/browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.cpp \
b/libs/mediacenter/filteredbackendsmodel.cpp similarity index 53%
copy from browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.cpp
 copy to libs/mediacenter/filteredbackendsmodel.cpp
index e29d887..4426bf7 100644
--- a/browsingbackends/metadatabackends/metadatapicturebackend/metadatapicturebackend.cpp
                
+++ b/libs/mediacenter/filteredbackendsmodel.cpp
@@ -1,7 +1,5 @@
 /***************************************************************************
                
- *   Copyright 2009 by Alessandro Diaferia <alediaferia@gmail.com>         \
                *
- *   Copyright 2011 Sinny Kumari <ksinny@gmail.com>                        \
                *
- *   Copyright 2007 Aaron Seigo <aseigo@kde.org>
+ *   Copyright 2012 by Shantanu Tushar <shaan7in@gmail.com>                \
                *
  *                                                                         \
                *
  *   This program is free software; you can redistribute it and/or modify  \
                *
  *   it under the terms of the GNU General Public License as published by  \
* @@ -19,31 +17,47 @@
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        \
                *
  ***************************************************************************/
  
+#include "filteredbackendsmodel.h"
+#include "backendsmodel.h"
 
-#include "metadatapicturebackend.h"
-
-#include "metadatapicturemodel.h"
+FilteredBackendsModel::FilteredBackendsModel(QObject *parent) : \
QSortFilterProxyModel(parent) +{
 
-#include <QDebug>
+}
 
-MEDIACENTER_EXPORT_BROWSINGBACKEND(MetadataPictureBackend)
+bool FilteredBackendsModel::filterAcceptsRow(int source_row, const \
QModelIndex& source_parent) const +{
+    if (!sourceModel())
+        return false;
+    if (m_category.isEmpty())
+        return true;
+    return sourceModel()->data(sourceModel()->index(source_row, 0),
+                               \
BackendsModel::BackendCategoryRole).toString()  == m_category; +}
 
-MetadataPictureBackend::MetadataPictureBackend(QObject* parent, const \
                QVariantList& args)
-    : AbstractMetadataBackend(parent, args)
+void FilteredBackendsModel::setBackendCategory(const QString& category)
 {
+    m_category = category;
+    emit backendCategoryChanged();
 }
 
-MetadataPictureBackend::~MetadataPictureBackend()
+QString FilteredBackendsModel::backendCategory() const
 {
+    return m_category;
 }
 
-void MetadataPictureBackend::init()
+void FilteredBackendsModel::setSourceBackendsModel(QObject* model)
 {
-    AbstractMetadataBackend::init();
-    if (metadataModel()) {
-        setModel(new MetadataPictureModel(this));
+    QAbstractItemModel *m = qobject_cast<QAbstractItemModel*>(model);
+    if (m) {
+        setSourceModel(m);
     }
+    emit sourceBackendsModelChanged();
 }
 
+QObject* FilteredBackendsModel::sourceBackendsModel()
+{
+    return static_cast<QObject*>(sourceModel());
+}
 
-#include "metadatapicturebackend.moc"
+#include "filteredbackendsmodel.moc"
diff --git a/libs/mediacenter/backendsmodel.h \
b/libs/mediacenter/filteredbackendsmodel.h similarity index 59%
copy from libs/mediacenter/backendsmodel.h
copy to libs/mediacenter/filteredbackendsmodel.h
index ed253a2..1fe7956 100644
--- a/libs/mediacenter/backendsmodel.h
+++ b/libs/mediacenter/filteredbackendsmodel.h
@@ -1,5 +1,5 @@
 /***************************************************************************
                
- *   Copyright 2012 Sinny Kumari <ksinny@gmail.com>                        \
* + *   Copyright 2012 by Shantanu Tushar <shaan7in@gmail.com>         *
  *                                                                         \
                *
  *   This program is free software; you can redistribute it and/or modify  \
                *
  *   it under the terms of the GNU General Public License as published by  \
* @@ -17,35 +17,33 @@
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        \
                *
  ***************************************************************************/
  
-#ifndef BACKENDSMODEL_H
-#define BACKENDSMODEL_H
+#ifndef FILTEREDBACKENDSMODEL_H
+#define FILTEREDBACKENDSMODEL_H
 
+#include <QtGui/QSortFilterProxyModel>
 #include "mediacenter_export.h"
 
-#include <QAbstractItemModel>
-
-class QDeclarativeEngine;
-
-namespace MediaCenter {
-    class AbstractBrowsingBackend;
-}
-
-class MEDIACENTER_EXPORT BackendsModel : public QAbstractListModel
+class MEDIACENTER_EXPORT FilteredBackendsModel : public \
QSortFilterProxyModel  {
     Q_OBJECT
+    Q_PROPERTY(QString backendCategory READ backendCategory WRITE \
setBackendCategory NOTIFY backendCategoryChanged) +    Q_PROPERTY(QObject* \
sourceBackendsModel READ sourceBackendsModel WRITE setSourceBackendsModel \
NOTIFY sourceBackendsModelChanged) +
 public:
-    enum Roles {
-        ModelObjectRole = Qt::UserRole + 1
-    };
+    FilteredBackendsModel(QObject* parent = 0);
+    virtual bool filterAcceptsRow(int source_row, const QModelIndex& \
source_parent) const;  
-    explicit BackendsModel (QDeclarativeEngine *engine, QObject* parent = \
                0);
-    virtual QVariant data (const QModelIndex& index, int role = \
                Qt::DisplayRole) const;
-    virtual int rowCount (const QModelIndex& parent = QModelIndex()) \
const; +    QString backendCategory() const;
+    void setBackendCategory(const QString &category);
+    QObject *sourceBackendsModel();
+    void setSourceBackendsModel(QObject *model);
 
-private:
-    bool loadBrowsingBackend(MediaCenter::AbstractBrowsingBackend \
*backend, QDeclarativeEngine *engine); +signals:
+    void backendCategoryChanged();
+    void sourceBackendsModelChanged();
 
-    QList<MediaCenter::AbstractBrowsingBackend*> backends;
+private:
+    QString m_category;
 };
 
-#endif // BACKENDSMODEL_H
+#endif // FILTEREDBACKENDSMODEL_H
diff --git a/shells/newshell/mainwindow.cpp \
b/shells/newshell/mainwindow.cpp index a715278..873329a 100644
--- a/shells/newshell/mainwindow.cpp
+++ b/shells/newshell/mainwindow.cpp
@@ -21,12 +21,14 @@
 
 #include <libs/mediacenter/backendsmodel.h>
 #include <libs/mediacenter/playlistmodel.h>
+#include <libs/mediacenter/filteredbackendsmodel.h>
 #include <Plasma/Package>
 
 #include <KDE/KCmdLineArgs>
 
 #include <QtDeclarative/QDeclarativeView>
 #include <QtDeclarative/QDeclarativeContext>
+#include <qdeclarative.h>
 
 #ifdef QT_MULTIMEDIA_KIT_FOUND
 #include <QtMultimediaKit/QVideoWidget>
@@ -70,6 +72,7 @@ MainWindow::MainWindow(QWidget *parent) : \
KMainWindow(parent)  m_kdeclarative.initialize();
     m_kdeclarative.setupBindings();
 
+    qmlRegisterType<FilteredBackendsModel>("org.kde.plasma.mediacentercomponents", \
                0, 1, "FilteredBackendsModel");
     BackendsModel *backendsModel = new BackendsModel(view->engine(), \
                this);
     view->rootContext()->setContextProperty("backendsModel", \
backendsModel);  PlaylistModel *playlistModel = new PlaylistModel(this);
diff --git a/shells/newshell/package/contents/ui/mediacenter.qml \
b/shells/newshell/package/contents/ui/mediacenter.qml index \
                bb0ebbb..1091cc4 100644
--- a/shells/newshell/package/contents/ui/mediacenter.qml
+++ b/shells/newshell/package/contents/ui/mediacenter.qml
@@ -30,6 +30,11 @@ Rectangle {
         GradientStop { position: 1.0; color: "#000000" }
     }
 
+    MediaCenterComponents.FilteredBackendsModel {
+        id: filteredBackendsModel
+        sourceBackendsModel: backendsModel
+    }
+
     MediaCenterComponents.RuntimeData {
         id: runtimeData
 
@@ -184,7 +189,7 @@ Rectangle {
         anchors.fill: parent
         focus: visible
 
-        model: backendsModel
+        model: filteredBackendsModel
         metaData: mediaPlayer.metaData
         onBackendSelected: { runtimeData.currentBrowsingBackend = \
selectedBackend; visible = false }  onVisibleChanged: {


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

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