[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/base/plasma/MediaCenterComponents
From: Lukas Appelhans <l.appelhans () gmx ! de>
Date: 2010-12-06 17:52:05
Message-ID: 20101206175205.7B2D1AC8A4 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1204312 by lappelhans:
Finally this is my first CodeIn Project:
-Remove all the Mediabrowser-c++-view
-Add a loader for a qml-view
-add a basic, yet not 100% finished, qml-view
It needs some polishing here and there, but the basics are there :)
M +0 -1 CMakeLists.txt
M +5 -4 applets/mediabrowser/CMakeLists.txt
D applets/mediabrowser/abstractmediaitemview.cpp
D applets/mediabrowser/abstractmediaitemview.h
D applets/mediabrowser/blur.cpp
M +1 -5 applets/mediabrowser/browsingbackends/localfiles/localfilesabstractbackend.cpp \
M +0 -1 applets/mediabrowser/browsingbackends/localfiles/localfilesabstractbackend.h \
A applets/mediabrowser/filegrid.qml [License: UNKNOWN]
D applets/mediabrowser/fileviewitem.cpp
D applets/mediabrowser/fileviewitem.h
D applets/mediabrowser/gridview.cpp
D applets/mediabrowser/gridview.h
D applets/mediabrowser/listview.cpp
D applets/mediabrowser/listview.h
M +35 -68 applets/mediabrowser/mediabrowser.cpp
M +5 -8 applets/mediabrowser/mediabrowser.h
M +21 -1 libs/mediacenter/abstractbrowsingbackend.cpp
M +19 -9 libs/mediacenter/abstractbrowsingbackend.h
A libs/mediacenter/widgets/blur.cpp \
applets/mediabrowser/blur.cpp#1202417 [License: LGPL (v2)]
--- trunk/playground/base/plasma/MediaCenterComponents/CMakeLists.txt \
#1204311:1204312 @@ -9,7 +9,6 @@
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_BINARY_DIR}
${KDE4_INCLUDES}
- applets/mediabrowser/
utils/
widgets/
libs/
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/CMakeLists.txt \
#1204311:1204312 @@ -1,9 +1,5 @@
set(mediabrowser_SRCS
mediabrowser.cpp
-abstractmediaitemview.cpp
-listview.cpp
-gridview.cpp
-fileviewitem.cpp
)
# Now make sure all files get to the right place
@@ -14,6 +10,7 @@
${KDE4_KIO_LIBS}
${KDE4_KFILE_LIBS}
${KDE4_NEPOMUK_LIBS}
+ ${QT_QTDECLARATIVE_LIBRARY}
mediacenterlibs
)
@@ -23,4 +20,8 @@
install(FILES plasma-applet-mediabrowser.desktop
DESTINATION ${SERVICES_INSTALL_DIR})
+install(FILES
+filegrid.qml
+DESTINATION ${DATA_INSTALL_DIR}/plasma-mediacenter/declarative/)
+
add_subdirectory(browsingbackends)
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/browsingbackends/localfiles/localfilesabstractbackend.cpp \
#1204311:1204312 @@ -54,11 +54,6 @@
}
-QAbstractItemModel* LocalFilesAbstractBackend::model()
-{
- return m_model;
-}
-
void LocalFilesAbstractBackend::setBackendName(const QString& name)
{
m_backendName = name;
@@ -117,6 +112,7 @@
if (!m_model) {
m_model = new KDirModel(this);
+ setModel(m_model);
initModel();
}
}
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/browsingbackends/localfiles/localfilesabstractbackend.h \
#1204311:1204312 @@ -34,7 +34,6 @@
LocalFilesAbstractBackend(const QString &name, QObject* parent, const \
QVariantList& args); virtual ~LocalFilesAbstractBackend();
- QAbstractItemModel* model();
virtual void createConfigurationInterface(KConfigDialog* parent);
virtual void init();
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/mediabrowser.cpp \
#1204311:1204312 @@ -17,9 +17,6 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
***************************************************************************/
#include "mediabrowser.h"
-#include "listview.h"
-#include "gridview.h"
-#include "abstractmediaitemview.h"
#include <mediacenter/abstractbrowsingbackend.h>
#include <mediacenter/browsergesture.h>
@@ -28,6 +25,10 @@
#include <QWidget>
#include <QKeyEvent>
#include <QGraphicsLinearLayout>
+#include <QtDeclarative/QDeclarativeEngine>
+#include <QtDeclarative/QDeclarativeComponent>
+#include <QtDeclarative/QDeclarativeContext>
+#include <QtDeclarative/qdeclarative.h>
#include <KDirModel>
#include <KConfigDialog>
@@ -37,10 +38,12 @@
#include <KDebug>
#include <KDirLister>
+QML_DECLARE_TYPE(MediaCenter::AbstractBrowsingBackend)
+
MediaBrowser::MediaBrowser(QObject *parent, const QVariantList &args)
: MediaCenter::Browser(parent, args),
m_view(0),
- m_model(0),
+ m_backend(0),
m_layout(new QGraphicsLinearLayout(Qt::Vertical))
{
setAspectRatioMode(Plasma::IgnoreAspectRatio);
@@ -48,6 +51,8 @@
setEnableToolbar(true);
toolbar()->setNavigationControls(MediaCenter::NavigationToolbar::BackwardControl \
| MediaCenter::NavigationToolbar::ViewModeControl); +
+ qmlRegisterType<MediaCenter::AbstractBrowsingBackend>("MediaCenter", 0, 1, \
"AbstractBrowsingBackend"); }
MediaBrowser::~MediaBrowser()
@@ -55,16 +60,16 @@
void MediaBrowser::showInstalledBackends()
{
-// delete m_model;
+// delete m_backend->model();
// m_model = new StartupModel(this);
-// m_view->setModel(m_model);
+// m_view->setModel(m_backend->model());
// QmlHomeView *homeView = new QmlHomeView(this);
// QGraphicsLinearLayout *layout = \
static_cast<QGraphicsLinearLayout*>(this->layout()); // \
layout->addItem(homeView);
// homeView->setQmlPath(KStandardDirs::locate("data", \
"plasma-mediacenter/declarative/homeview.qml"));
-// homeView->setModel(m_model);
+// homeView->setModel(m_backend->model());
}
void MediaBrowser::init()
@@ -78,23 +83,14 @@
void MediaBrowser::createView()
{
delete m_view;
- kDebug() << "view deleted";
+ m_view = new Plasma::DeclarativeWidget(this);
- if (m_viewType == "list") {
- m_view = new ListView(this);
- } else {
- m_view = new GridView(this);
- }
+ m_view->setQmlPath(KStandardDirs::locate("data", \
"plasma-mediacenter/declarative/filegrid.qml"));
- m_view->setDrawBlurredText(m_blurred);
- m_view->setFocus(Qt::OtherFocusReason);
-
- if (m_model) {
- m_view->setModel(m_model);
-// m_view->generateItems();
+ if (m_backend) {
+ m_view->engine()->rootContext()->setContextProperty("fileBackend", \
m_backend); }
-
- connect (this, SIGNAL(browseHistoryBackRequest()), m_view, SLOT(goPrevious()));
+ /*connect (this, SIGNAL(browseHistoryBackRequest()), m_view, \
SLOT(goPrevious()));
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&))); @@ -102,6 +98,7 @@
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()));
+// // */
QGraphicsLinearLayout *layout = \
static_cast<QGraphicsLinearLayout*>(this->layout()); layout->addItem(m_view);
@@ -109,7 +106,7 @@
void MediaBrowser::createConfigurationInterface(KConfigDialog *parent)
{
- QWidget *generalConfig = new QWidget(parent);
+ /*QWidget *generalConfig = new QWidget(parent);
uiGeneral.setupUi(generalConfig);
parent->addPage(generalConfig, i18n("Browser appearance"), \
"preferences-desktop-display"); @@ -119,7 +116,7 @@
uiGeneral.gridRadio->setChecked(true);
}
- uiGeneral.blurredTextCheckBox->setChecked(m_blurred);
+ uiGeneral.blurredTextCheckBox->setChecked(m_blurred);*/
if (currentBrowsingBackend()) {
if (currentBrowsingBackend()->hasConfigurationInterface()) {
@@ -132,15 +129,15 @@
void MediaBrowser::loadConfiguration()
{
- KConfigGroup cf = config();
+ //KConfigGroup cf = config();
- m_viewType = cf.readEntry("ViewType", "list");
- m_blurred = cf.readEntry("BlurredText", true);
+ //m_viewType = cf.readEntry("ViewType", "list");
+ //m_blurred = cf.readEntry("BlurredText", true);
}
void MediaBrowser::configAccepted()
{
- KConfigGroup cf = config();
+ /*KConfigGroup cf = config();
kDebug() << cf.name();
QString type;
@@ -159,9 +156,9 @@
bool blurred = uiGeneral.blurredTextCheckBox->isChecked();
if (blurred != m_blurred) {
m_blurred = blurred;
- m_view->setDrawBlurredText(m_blurred);
+ //m_view->setDrawBlurredText(m_blurred);
cf.writeEntry("BlurredText", m_blurred);
- }
+ }*/
}
@@ -169,25 +166,22 @@
{
kDebug() << "loading browsing backend";
- m_view->setModel( 0 );
- backend->setParent(this);
- backend->init();
- m_model = backend->model();
- m_view->setModel( m_model );
+ m_backend = backend;
- emit browsingModeChanged( backend->requiredMode() );
+ m_backend->setParent(this);
+ m_backend->init();
+ m_view->engine()->rootContext()->setContextProperty("fileBackend", m_backend);
+
+ emit browsingModeChanged( m_backend->requiredMode() );
}
void MediaBrowser::showStartupState()
{
- //Calling directly showInstalledBackends makes PMC crash on startup
- //m_model = new StartupModel(this);
- //m_view->setModel(m_model);
}
KUrl MediaBrowser::currentUrl() const
{
- KDirModel *modeldir = qobject_cast<KDirModel*>(m_model);
+ KDirModel *modeldir = qobject_cast<KDirModel*>(m_backend->model());
if (!modeldir || !modeldir->dirLister()) {
return KUrl();
}
@@ -196,7 +190,7 @@
void MediaBrowser::openUrl(const KUrl &url)
{
- KDirModel *modeldir = qobject_cast<KDirModel*>(m_model);
+ KDirModel *modeldir = qobject_cast<KDirModel*>(m_backend->model());
if (modeldir) {
modeldir->dirLister()->openUrl(url);
}
@@ -204,7 +198,7 @@
void MediaBrowser::listMediaInDirectory()
{
- m_view->listMediaInDirectory();
+ //m_view->listMediaInDirectory();
}
void MediaBrowser::selectedMediasAdd(const MediaCenter::Media &media)
@@ -234,32 +228,5 @@
emit selectedMediasChanged(m_selectedMedias);
}
-void MediaBrowser::gestureEvent(MediaCenter::BrowserGesture *bGesture)
-{
- if (!bGesture) {
- return;
- }
- if (bGesture->activeAction() == MediaCenter::BrowserGesture::BrowseLeftAction) {
- QKeyEvent keyEvent(QEvent::KeyPress, Qt::Key_Left, Qt::NoModifier);
- qApp->sendEvent(m_view, &keyEvent);
- } else if (bGesture->activeAction() == \
MediaCenter::BrowserGesture::BrowseRightAction) {
- QKeyEvent keyEvent(QEvent::KeyPress, Qt::Key_Right, Qt::NoModifier);
- qApp->sendEvent(m_view, &keyEvent);
- } else if (bGesture->activeAction() == \
MediaCenter::BrowserGesture::BrowseUpAction) {
- QKeyEvent keyEvent(QEvent::KeyPress, Qt::Key_Up, Qt::NoModifier);
- qApp->sendEvent(m_view, &keyEvent);
- } else if (bGesture->activeAction() == \
MediaCenter::BrowserGesture::BrowseDownAction) {
- QKeyEvent keyEvent(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier);
- qApp->sendEvent(m_view, &keyEvent);
- } else if (bGesture->activeAction() == \
MediaCenter::BrowserGesture::ActivateAction) {
- QKeyEvent keyEvent(QKeyEvent::KeyPress, Qt::Key_Return, Qt::NoModifier);
- qApp->sendEvent(m_view, &keyEvent);
- }
-}
-
-void MediaBrowser::createQmlHomeView()
-{}
-
-
K_EXPORT_PLASMA_APPLET(mediabrowser, MediaBrowser)
--- trunk/playground/base/plasma/MediaCenterComponents/applets/mediabrowser/mediabrowser.h \
#1204311:1204312 @@ -20,8 +20,9 @@
#define MEDIABROWSER_H
#include <mediacenter/browser.h>
+#include <plasma/widgets/declarativewidget.h>
-#include "ui_general.h"
+//#include "ui_general.h"
class QGraphicsLinearLayout;
class AbstractMediaItemView;
@@ -56,9 +57,6 @@
void selectedMediasRemove(const MediaCenter::Media &media);
void clearSelectedMedias();
-protected:
- void gestureEvent(MediaCenter::BrowserGesture *);
-
signals:
void mediasListChanged(const QList<MediaCenter::Media> &list);
@@ -67,10 +65,10 @@
void pictureDataEngine();
private:
- AbstractMediaItemView *m_view;
- Ui::General uiGeneral;
+ Plasma::DeclarativeWidget * m_view;
+ //Ui::General uiGeneral;
- QAbstractItemModel *m_model;
+ MediaCenter::AbstractBrowsingBackend *m_backend;
bool m_blurred;
QString m_viewType;
@@ -86,7 +84,6 @@
void loadConfiguration();
void configAccepted();
//void slotIndexActivated(const QModelIndex &);
- void createQmlHomeView();
};
--- trunk/playground/base/plasma/MediaCenterComponents/libs/mediacenter/abstractbrowsingbackend.cpp \
#1204311:1204312 @@ -32,7 +32,8 @@
AbstractBrowsingBackendPrivate(KService::Ptr service, AbstractBrowsingBackend \
*q) : backendInfo(service),
q(q),
- cfInterface(false)
+ cfInterface(false),
+ model(0)
{}
AbstractBrowsingBackend *q;
@@ -40,19 +41,38 @@
KPluginInfo backendInfo;
MediaCenter::Mode requiredMode;
BrowsingType browsingType;
+ QAbstractItemModel * model;
};
AbstractBrowsingBackend::AbstractBrowsingBackend(QObject *parent, const QVariantList \
&args) : QObject(parent), d(new \
AbstractBrowsingBackendPrivate(KService::serviceByStorageId(args.count() ? \
args.first().toString() : QString()), this)) {
Q_UNUSED(args);
+ qRegisterMetaType<QAbstractItemModel*>("QAbstractItemModel*");
}
+AbstractBrowsingBackend::AbstractBrowsingBackend(QObject * parent)
+ : QObject(parent),
+ d(new AbstractBrowsingBackendPrivate(KService::serviceByStorageId(QString()), \
this)) +{
+}
+
AbstractBrowsingBackend::~AbstractBrowsingBackend()
{
delete d;
}
+void AbstractBrowsingBackend::setModel(QAbstractItemModel * model)
+{
+ d->model = model;
+ emit modelChanged(d->model);
+}
+
+QObject * AbstractBrowsingBackend::model()
+{
+ return (QObject*)(d->model);
+}
+
bool AbstractBrowsingBackend::hasConfigurationInterface() const
{
return d->cfInterface;
--- trunk/playground/base/plasma/MediaCenterComponents/libs/mediacenter/abstractbrowsingbackend.h \
#1204311:1204312 @@ -49,6 +49,8 @@
class MEDIACENTER_EXPORT AbstractBrowsingBackend : public QObject
{
Q_OBJECT
+ Q_PROPERTY(QObject* backendModel READ model/* WRITE setModel*/ NOTIFY \
modelChanged) +
public:
enum BrowsingType {
LocalBrowsing,
@@ -64,18 +66,13 @@
* The first argument of @param args must be the unique storageID of the \
service.
* */
AbstractBrowsingBackend(QObject *parent, const QVariantList &args);
+ AbstractBrowsingBackend(QObject *parent = 0);
virtual ~AbstractBrowsingBackend();
/**
- * 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.
- * @see MediaRole
+ * @returns the model of the browsing backend
*/
- virtual QAbstractItemModel *model() = 0;
+ QObject *model();
/**
* @return the browsing type of the model. Typically a remote browsing type
@@ -127,7 +124,6 @@
*/
static KService::List availableBackends();
-public slots:
/**
* This slot must be reimplemented if browsingType returns
* LocalBrowsing. This method will be used to list the media
@@ -142,8 +138,22 @@
*/
virtual void searchForMedia(const QString &name);
+signals:
+ void modelChanged(QAbstractItemModel * model);
+
protected:
/**
+ * This method must be set 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.
+ * @see MediaRole
+ */
+ void setModel(QAbstractItemModel * model);
+
+ /**
* As from Plasma::Applet this method should be used in order
* to inform about the availability of a configuration interface for
* the model.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic