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

List:       kde-commits
Subject:    playground/base/plasma/MediaCenterComponents
From:       Alessandro Diaferia <alediaferia () gmail ! com>
Date:       2010-07-24 9:06:45
Message-ID: 20100724090645.AB957AC7E2 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1153944 by adiaferia:

still some changes regarding browsing backend stuff moved lower in the stack

 M  +7 -17     applets/mediabrowser/mediabrowser.cpp  
 M  +5 -4      applets/mediabrowser/mediabrowser.h  
 M  +12 -2     libs/mediacenter/abstractbrowsingbackend.cpp  
 M  +9 -3      libs/mediacenter/abstractbrowsingbackend.h  
 M  +22 -4     libs/mediacenter/browser.cpp  
 M  +21 -2     libs/mediacenter/browser.h  


--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/mediabrowser.cpp \
#1153943:1153944 @@ -22,6 +22,7 @@
 #include "startupmodel.h"
 #include "qmlhomeview.h"
 #include "viewitem.h"
+#include "abstractmediaitemview.h"
 
 #include <mediacenter/abstractbrowsingbackend.h>
 #include <mediacenter/browsergesture.h>
@@ -29,6 +30,7 @@
 
 #include <QWidget>
 #include <QKeyEvent>
+#include <QGraphicsLinearLayout>
 
 #include <KDirModel>
 #include <KDirLister>
@@ -46,7 +48,6 @@
     : MediaCenter::Browser(parent, args),
     m_view(0),
     m_model(0),
-    m_backend(0),
     m_layout(new QGraphicsLinearLayout(Qt::Vertical))
 {
     setAspectRatioMode(Plasma::IgnoreAspectRatio);
@@ -105,7 +106,7 @@
     connect (m_view, SIGNAL(mediasActivated(QList<MediaCenter::Media>)), this, \
                SIGNAL(mediasActivated(QList<MediaCenter::Media>)));
     connect (m_view, SIGNAL(mediasListChanged(QList<MediaCenter::Media>)), this, \
                SIGNAL(mediasListChanged(QList<MediaCenter::Media>)));
     connect (m_view, SIGNAL(mediaActivated(const MediaCenter::Media&)), this, \
                SIGNAL(mediaActivated(const MediaCenter::Media&)));
-    connect (m_view, SIGNAL(indexActivated(QModelIndex)), this, \
SLOT(slotIndexActivated(QModelIndex))); +    //connect (m_view, \
                SIGNAL(indexActivated(QModelIndex)), this, \
                SLOT(slotIndexActivated(QModelIndex)));
     connect (m_view, SIGNAL(mediaSelected(MediaCenter::Media)), this, \
                SLOT(selectedMediasAdd(MediaCenter::Media)));
     connect (m_view, SIGNAL(mediaUnselected(MediaCenter::Media)), this, \
                SLOT(selectedMediasRemove(MediaCenter::Media)));
     connect (m_view, SIGNAL(directoryChanged()), this, SLOT(clearSelectedMedias()));
@@ -128,9 +129,9 @@
 
     uiGeneral.blurredTextCheckBox->setChecked(m_blurred);
 
-    if (m_backend) {
-        if (m_backend->hasConfigurationInterface()) {
-            m_backend->createConfigurationInterface(parent);
+    if (currentBrowsingBackend()) {
+        if (currentBrowsingBackend()->hasConfigurationInterface()) {
+            currentBrowsingBackend()->createConfigurationInterface(parent);
         }
     }
 
@@ -172,26 +173,15 @@
 
 }
 
-void MediaBrowser::slotIndexActivated(const QModelIndex &index)
+void MediaBrowser::loadBrowsingBackend(MediaCenter::AbstractBrowsingBackend \
*backend)  {
-    // let's see whether we are loading a plugin or not..
-    StartupModel *model = qobject_cast<StartupModel*>(m_model);
-    if (model) {
-        QString error;
-        MediaCenter::AbstractBrowsingBackend *backend = \
                model->backendFromIndex(index, this, &error);
-        if (!error.isEmpty()) {
-            kError() << error;
-            return;
-        }
         m_view->setModel(0);
-        m_backend = backend;
         backend->init();
         m_model = backend->model();
         m_view->setModel(m_model);
 
         emit browsingModeChanged(backend->requiredMode());
     }
-}
 
 void MediaBrowser::showStartupState()
 {
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/mediabrowser.h \
#1153943:1153944 @@ -22,9 +22,9 @@
 #include <mediacenter/browser.h>
 
 #include "ui_general.h"
-#include "abstractmediaitemview.h"
 
-#include <QGraphicsLinearLayout>
+class QGraphicsLinearLayout;
+class AbstractMediaItemView;
 
 namespace MediaCenter {
 class AbstractBrowsingBackend;
@@ -48,6 +48,8 @@
 
     KUrl currentUrl() const;
 
+    void loadBrowsingBackend(MediaCenter::AbstractBrowsingBackend*);
+
 public slots:
     void openUrl(const KUrl &url);
     void listMediaInDirectory();
@@ -73,7 +75,6 @@
 
     bool m_blurred;
     QString m_viewType;
-    MediaCenter::AbstractBrowsingBackend *m_backend;
     QList<MediaCenter::Media> m_selectedMedias;
 
     QGraphicsLinearLayout *m_layout;
@@ -85,7 +86,7 @@
 private slots:
     void loadConfiguration();
     void configAccepted();
-    void slotIndexActivated(const QModelIndex &);
+    //void slotIndexActivated(const QModelIndex &);
     void createQmlHomeView();
 
 };
--- trunk/playground/base/plasma/MediaCenterComponents/libs/mediacenter/abstractbrowsingbackend.cpp \
#1153943:1153944 @@ -22,6 +22,7 @@
 #include <KService>
 #include <KPluginInfo>
 #include <KDebug>
+#include <KServiceTypeTrader>
 
 using namespace MediaCenter;
 
@@ -51,7 +52,7 @@
 {
 }
 
-bool AbstractBrowsingBackend::hasConfigurationInterface()
+bool AbstractBrowsingBackend::hasConfigurationInterface() const
 {
     return d->cfInterface;
 }
@@ -79,7 +80,7 @@
     d->requiredMode = mode;
 }
 
-MediaCenter::Mode AbstractBrowsingBackend::requiredMode()
+MediaCenter::Mode AbstractBrowsingBackend::requiredMode() const
 {
     return d->requiredMode;
 }
@@ -108,3 +109,12 @@
 {
     Q_UNUSED(name);
 }
+
+KService::List AbstractBrowsingBackend::availableBackends()
+{
+    KService::List plugins = \
KServiceTypeTrader::self()->query("Plasma/MediaCenter/BrowsingBackend"); +    if \
(plugins.isEmpty()) { +        kWarning() << "no available browsing backend";
+    }
+    return plugins;
+}
--- trunk/playground/base/plasma/MediaCenterComponents/libs/mediacenter/abstractbrowsingbackend.h \
#1153943:1153944 @@ -27,7 +27,7 @@
 #include "mediacenter_export.h"
 #include "mediacenter/mediacenter.h"
 #include "mediacenter/mediacenterstate.h"
-#include <kservice.h>
+#include <KService>
 
 class QAbstractItemModel;
 class KConfigDialog;
@@ -88,7 +88,7 @@
      */
     BrowsingType browsingType() const;
 
-    bool hasConfigurationInterface();
+    bool hasConfigurationInterface() const;
 
     /**
      * As from Plasma::Applet this method should be reimplemented
@@ -117,10 +117,16 @@
      * @return the proper mode needed to play the files exposed
      * by the model in this backend
      */
-    MediaCenter::Mode requiredMode();
+    MediaCenter::Mode requiredMode() const;
 
     QString name() const;
 
+    /**
+     * Convenience function that returns the list of
+     * available browsing backends found.
+     */
+    static KService::List availableBackends();
+
 public slots:
     /**
      * This slot must be reimplemented if browsingType returns
--- trunk/playground/base/plasma/MediaCenterComponents/libs/mediacenter/browser.cpp \
#1153943:1153944 @@ -17,8 +17,8 @@
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        *
  ***************************************************************************/
 #include "browser.h"
-#include <mediacenter/browsergesture.h>
-
+#include "browsergesture.h"
+#include "abstractbrowsingbackend.h"
 #include "widgets/navigationtoolbar.h"
 
 #include <QGestureEvent>
@@ -33,13 +33,16 @@
 public:
     BrowserPrivate(Browser *q) :
         q(q),
-        toolbar(0)
+        toolbar(0),
+        enableToolbar(false),
+        currentBackend(0)
     {}
 
     Browser *q;
     Qt::GestureType gestureType;
     NavigationToolbar *toolbar;
-    bool enableToolbar;
+    bool enableToolbar : 1;
+    AbstractBrowsingBackend *currentBackend;
 };
 
 Browser::Browser(QObject *parent, const QVariantList &args) : Plasma::Applet(parent, \
args), @@ -131,3 +134,18 @@
 {
     return d->enableToolbar;
 }
+
+AbstractBrowsingBackend* Browser::currentBrowsingBackend() const
+{
+    return d->currentBackend;
+}
+
+void Browser::setCurrentBrowsingBackend(AbstractBrowsingBackend *backend)
+{
+    if (d->currentBackend == backend) {
+        return;
+    }
+    d->currentBackend = backend;
+    loadBrowsingBackend(d->currentBackend);
+}
+
--- trunk/playground/base/plasma/MediaCenterComponents/libs/mediacenter/browser.h \
#1153943:1153944 @@ -30,6 +30,7 @@
 
 class NavigationToolbar;
 class BrowserGesture;
+class AbstractBrowsingBackend;
 
 /**
  * @class Browser
@@ -56,8 +57,8 @@
      * at index 0. In order to preserve the layout it is highly recommended
      * to insert other eventual widgets from index 1 on.
      */
-    virtual void setEnableToolbar(bool);
-    virtual bool enableToolbar() const;
+    void setEnableToolbar(bool);
+    bool enableToolbar() const;
 
     virtual void showStartupState() = 0;
     virtual QList<MediaCenter::Media> selectedMedias() const = 0;
@@ -80,6 +81,19 @@
      */
     virtual MediaCenter::NavigationToolbar *toolbar() const;
 
+    /**
+     * This method must be reimplemented in order to load the browsing backend
+     * and reflects the changes in the applet.
+     * The most common implementation consists in applying the model supplied by
+     * the backend to a view in the applet.
+     */
+    virtual void loadBrowsingBackend(MediaCenter::AbstractBrowsingBackend *) = 0;
+    
+    /**
+     * This function is used to retrieve the current browsing backend in use.
+     */
+    MediaCenter::AbstractBrowsingBackend* currentBrowsingBackend() const;
+
 public Q_SLOTS:
     /**
      * This method must be reimplemented in order to allow the browsing
@@ -92,6 +106,11 @@
     virtual void selectedMediasRemove(const MediaCenter::Media &) = 0;
     virtual void clearSelectedMedias() = 0;
 
+    /**
+     * @internal no need to call this function manually
+     */
+    void setCurrentBrowsingBackend(MediaCenter::AbstractBrowsingBackend*);
+
 Q_SIGNALS:
     void browseUpRequest();
     void browseHistoryBackRequest();


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

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