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

List:       kde-commits
Subject:    playground/base/plasma/MediaCenterComponents/applets/mediabrowser
From:       Alessandro Diaferia <alediaferia () gmail ! com>
Date:       2010-07-17 17:36:03
Message-ID: 20100717173603.62381AC76A () svn ! kde ! org
[Download RAW message or body]

SVN commit 1151077 by adiaferia:

update backends API with more attention to the future remote backends

 M  +1 -0      browsingbackends/localfiles/localfilesabstractbackend.cpp  
 M  +0 -1      browsingbackends/localfiles/localfilesabstractbackend.h  
 M  +2 -6      browsingbackends/localfiles/localmusic/localmusicbackend.cpp  
 M  +0 -2      browsingbackends/localfiles/localmusic/localmusicbackend.h  
 M  +2 -7      browsingbackends/localfiles/localpictures/localpicturesbackend.cpp  
 M  +0 -2      browsingbackends/localfiles/localpictures/localpicturesbackend.h  
 M  +2 -7      browsingbackends/localfiles/localvideos/localvideosbackend.cpp  
 M  +0 -2      browsingbackends/localfiles/localvideos/localvideosbackend.h  
 M  +36 -6     mediabrowserlibs/abstractbrowsingbackend.cpp  
 M  +55 -4     mediabrowserlibs/abstractbrowsingbackend.h  


--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/browsingbackends/localfiles/localfilesabstractbackend.cpp \
#1151076:1151077 @@ -46,6 +46,7 @@
 {
     Nepomuk::ResourceManager::instance()->init();
     setHasConfigurationInterface(true);
+    setBrowsingType(AbstractBrowsingBackend::LocalBrowsing);
 }
 
 LocalFilesAbstractBackend::~LocalFilesAbstractBackend()
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/browsingbackends/localfiles/localfilesabstractbackend.h \
#1151076:1151077 @@ -34,7 +34,6 @@
     LocalFilesAbstractBackend(const QString &name, QObject* parent, const \
QVariantList& args);  virtual ~LocalFilesAbstractBackend();
 
-    virtual AbstractBrowsingBackend::BrowsingType browsingType() const = 0;
     QAbstractItemModel* model();
     virtual void createConfigurationInterface(KConfigDialog* parent);
     virtual void init();
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/browsingbackends/localfiles/localmusic/localmusicbackend.cpp \
#1151076:1151077 @@ -19,6 +19,7 @@
 #include "localmusicbackend.h"
 
 #include <mediabrowserlibs/mediabrowser_export.h>
+#include <mediacenter/mediacenterstate.h>
 #include <Nepomuk/Query/ResourceTypeTerm>
 #include "nfo.h"
 
@@ -30,13 +31,8 @@
 
     m_acceptedMimePrefix = "audio/";
     m_term = Nepomuk::Query::ResourceTypeTerm(Vocabulary::NFO::Audio());
-    setAllowedMediaTypes(MediaCenter::Audio);
+    setRequiredMode(MediaCenter::MusicMode);
 }
 
 LocalMusicBackend::~LocalMusicBackend()
 {}
-
-AbstractBrowsingBackend::BrowsingType LocalMusicBackend::browsingType() const
-{
-    return AbstractBrowsingBackend::LocalBrowsing;
-}
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/browsingbackends/localfiles/localmusic/localmusicbackend.h \
#1151076:1151077 @@ -28,8 +28,6 @@
     LocalMusicBackend(QObject *parent, const QVariantList &args);
     ~LocalMusicBackend();
 
-    AbstractBrowsingBackend::BrowsingType browsingType() const;
-
 };
 
 #endif // LOCALMUSICPACKAGE_H
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/browsingbackends/localfiles/localpictures/localpicturesbackend.cpp \
#1151076:1151077 @@ -19,6 +19,7 @@
 #include "localpicturesbackend.h"
 
 #include <mediabrowserlibs/mediabrowser_export.h>
+#include <mediacenter/mediacenterstate.h>
 #include "nfo.h"
 #include <Nepomuk/Query/ResourceTypeTerm>
 
@@ -29,14 +30,8 @@
 {
     m_acceptedMimePrefix = "image/";
     m_term = Nepomuk::Query::ResourceTypeTerm(Vocabulary::NFO::Image());
-    setAllowedMediaTypes(MediaCenter::Picture);
+    setRequiredMode(MediaCenter::MusicMode);
 }
 
 LocalPicturesBackend::~LocalPicturesBackend()
 {}
-
-AbstractBrowsingBackend::BrowsingType LocalPicturesBackend::browsingType() const
-{
-    return AbstractBrowsingBackend::LocalBrowsing;
-}
-
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/browsingbackends/localfiles/localpictures/localpicturesbackend.h \
#1151076:1151077 @@ -28,8 +28,6 @@
     LocalPicturesBackend(QObject *parent, const QVariantList &args);
     ~LocalPicturesBackend();
 
-    AbstractBrowsingBackend::BrowsingType browsingType() const;
-
 };
 
 #endif // LOCALPICTURESPACKAGE_H
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/browsingbackends/localfiles/localvideos/localvideosbackend.cpp \
#1151076:1151077 @@ -20,6 +20,7 @@
 
 #include <mediabrowserlibs/mediabrowser_export.h>
 #include "nfo.h"
+#include <mediacenter/mediacenterstate.h>
 
 #include <Nepomuk/Query/ResourceTypeTerm>
 
@@ -30,14 +31,8 @@
 {
     m_acceptedMimePrefix = "video/";
     m_term = Nepomuk::Query::ResourceTypeTerm(Vocabulary::NFO::Video());
-    setAllowedMediaTypes(MediaCenter::Video);
+    setRequiredMode(MediaCenter::VideoMode);
 }
 
 LocalVideosBackend::~LocalVideosBackend()
 {}
-
-AbstractBrowsingBackend::BrowsingType LocalVideosBackend::browsingType() const
-{
-    return AbstractBrowsingBackend::LocalBrowsing;
-}
-
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/browsingbackends/localfiles/localvideos/localvideosbackend.h \
#1151076:1151077 @@ -28,8 +28,6 @@
     LocalVideosBackend(QObject *parent, const QVariantList &args);
     ~LocalVideosBackend();
 
-    AbstractBrowsingBackend::BrowsingType browsingType() const;
-
 };
 
 #endif // LOCALVIDEOSPACKAGE_H
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/mediabrowserlibs/abstractbrowsingbackend.cpp \
#1151076:1151077 @@ -35,7 +35,9 @@
     AbstractBrowsingBackend *q;
     bool cfInterface;
     KPluginInfo backendInfo;
-    MediaCenter::MediaTypes allowedMediaTypes;
+    MediaCenter::Mode requiredMode;
+    SearchModes searchModes;
+    BrowsingType browsingType;
 };
 
 AbstractBrowsingBackend::AbstractBrowsingBackend(QObject *parent, const QVariantList \
&args) : QObject(parent), @@ -65,21 +67,20 @@
 
 KConfigGroup AbstractBrowsingBackend::config()
 {
-    kDebug() << KGlobal::config()->name();
     return KConfigGroup(KGlobal::config(), name());
 }
 
 void AbstractBrowsingBackend::init()
 {}
 
-void AbstractBrowsingBackend::setAllowedMediaTypes(const MediaCenter::MediaTypes \
&type) +void AbstractBrowsingBackend::setRequiredMode(MediaCenter::Mode mode)
 {
-    d->allowedMediaTypes = type;
+    d->requiredMode = mode;
 }
 
-MediaCenter::MediaTypes AbstractBrowsingBackend::allowedMediaTypes()
+MediaCenter::Mode AbstractBrowsingBackend::requiredMode()
 {
-    return d->allowedMediaTypes;
+    return d->requiredMode;
 }
 
 QString AbstractBrowsingBackend::name() const
@@ -87,3 +88,32 @@
     return d->backendInfo.name();
 }
 
+AbstractBrowsingBackend::SearchModes AbstractBrowsingBackend::availableSearchModes() \
const +{
+    return d->searchModes;
+}
+
+void AbstractBrowsingBackend::setAvailableSearchModes(SearchModes modes)
+{
+    d->searchModes = modes;
+}
+
+AbstractBrowsingBackend::BrowsingType AbstractBrowsingBackend::browsingType() const
+{
+    return d->browsingType;
+}
+
+void AbstractBrowsingBackend::setBrowsingType(BrowsingType type)
+{
+    d->browsingType = type;
+}
+
+void AbstractBrowsingBackend::openUrl(const KUrl &url)
+{
+    Q_UNUSED(url);
+}
+
+void AbstractBrowsingBackend::searchForMedia(const QString &name)
+{
+    Q_UNUSED(name);
+}
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/mediabrowserlibs/abstractbrowsingbackend.h \
#1151076:1151077 @@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright 2009 by Alessandro Diaferia <alediaferia@gmail.com>         *
+ *   Copyright 2009-2010 by Alessandro Diaferia <alediaferia@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  *
@@ -21,9 +21,12 @@
 
 #include <QObject>
 #include <QVariantList>
+#include <QFlags>
+
 #include <KConfigGroup>
 #include "mediabrowser_export.h"
 #include "mediacenter/mediacenter.h"
+#include "mediacenter/mediacenterstate.h"
 #include <kservice.h>
 
 class QAbstractItemModel;
@@ -55,6 +58,26 @@
     };
 
     /**
+     * Defines the search modes the backend is
+     * capable of.
+     */
+    enum SearchMode {
+        /** The backend cannot filter its content nor searching for new content. */
+        NoSearchMode = 0x0,
+        /** The backend can filter existing content. */
+        FilterSearchMode = 0x1,
+        /**
+         * The backend can search for new content.
+         * This is particuarly useful when implementing remote content
+         * models capable of searching for new content.
+         */
+        NewContentSearchMode = 0x2,
+        /** The model can both search for new content and filter existing one */
+        AllSearchModes = 0x3
+    };
+    Q_DECLARE_FLAGS(SearchModes, SearchMode)
+
+    /**
      * Used to load a backend instance via a plugin loader through KService.
      * The first argument of @param args must be the unique serviceID of the \
                service.
      * */
@@ -64,6 +87,7 @@
     /**
      * This method must be reimplemented in order to provide the model to be
      * used by the view.
+     * @note When LocalBrowsing is set it is highly recommended to use a KDirModel.
      * If the package is set to RemoteBrowsing the model
      * must provide an url that points to the media content for each
      * QModelIndex. It must make use of MediaRole role to accomplish this.
@@ -80,7 +104,7 @@
      * that allow actions like "go backward", "go forward", "go uplevel" that \
                generally change
      * their meaning if the browsing type is local or remote.
      */
-    virtual BrowsingType browsingType() const = 0;
+    BrowsingType browsingType() const;
 
     bool hasConfigurationInterface();
 
@@ -107,9 +131,31 @@
      */
     virtual void init();
 
-    MediaCenter::MediaTypes allowedMediaTypes();
+    /**
+     * @return the proper mode needed to play the files exposed
+     * by the model in this backend
+     */
+    MediaCenter::Mode requiredMode();
 
     QString name() const;
+
+    SearchModes availableSearchModes() const;
+
+public slots:
+    /**
+     * This slot must be reimplemented if browsingType returns
+     * LocalBrowsing. This method will be used to list the media
+     * resources in location specified by @param url
+     */
+    virtual void openUrl(const KUrl &url);
+
+    /**
+     * This slot must be reimplemented if browsingType returns
+     * RemoteBrowsing. This method will be used to perform searches
+     * for new medias to show in the browsing applet.
+     */
+    virtual void searchForMedia(const QString &name);
+
 protected:
     /**
      * As from Plasma::Applet this method should be used in order
@@ -117,12 +163,17 @@
      * the model.
      */
     void setHasConfigurationInterface(bool hasInterface);
-    void setAllowedMediaTypes(const MediaCenter::MediaTypes &type);
+    void setRequiredMode(MediaCenter::Mode);
 
+    void setAvailableSearchModes(SearchModes);
+    void setBrowsingType(BrowsingType);
+
 private:
     class AbstractBrowsingBackendPrivate;
     AbstractBrowsingBackendPrivate *d;
 
 };
 
+Q_DECLARE_OPERATORS_FOR_FLAGS(AbstractBrowsingBackend::SearchModes)
+
 #endif // MODELPACKAGE_H


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

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