[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