[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