diff --git a/src/SvgHandler.cpp b/src/SvgHandler.cpp --- a/src/SvgHandler.cpp +++ b/src/SvgHandler.cpp @@ -168,9 +168,6 @@ QPixmap SvgHandler::renderSvg( const QUrl& url, const QString& keyname, int width, int height, const QString& element, bool skipCache, const qreal opacity ) { - if( !url.isLocalFile() ) - return QPixmap(); - QString key; if( !skipCache ) { @@ -186,7 +183,7 @@ pixmap = QPixmap( width, height ); pixmap.fill( Qt::transparent ); - QString name = url.toLocalFile(); + QString name = url.isLocalFile() ? url.toLocalFile() : ":" + url.path(); QReadLocker readLocker( &m_lock ); if( ! m_renderers[name] ) { diff --git a/src/SvgTinter.cpp b/src/SvgTinter.cpp --- a/src/SvgTinter.cpp +++ b/src/SvgTinter.cpp @@ -39,7 +39,7 @@ {} QByteArray -SvgTinter::tint( const QString &filename) +SvgTinter::tint( const QString &filename ) { QFile file( filename ); if ( !file.open( QIODevice::ReadOnly ) ) diff --git a/src/context/AppletModel.h b/src/context/AppletModel.h --- a/src/context/AppletModel.h +++ b/src/context/AppletModel.h @@ -41,7 +41,6 @@ Icon, Mainscript, Collapsed, - PackagePath, ContentHeight }; Q_ENUM(Role) diff --git a/src/context/AppletModel.cpp b/src/context/AppletModel.cpp --- a/src/context/AppletModel.cpp +++ b/src/context/AppletModel.cpp @@ -125,9 +125,6 @@ case ContentHeight: return Amarok::config(QStringLiteral("Context")).readEntry(package.metadata().pluginId() + "_contentHeight", 300); - - case PackagePath: - return QVariant(package.path() + "contents/"); } return QVariant(); @@ -172,7 +169,6 @@ roles.insert(Icon, "icon"); roles.insert(Mainscript, "mainscript"); roles.insert(Collapsed, "collapsed"); - roles.insert(PackagePath, "packagePath"); roles.insert(ContentHeight, "contentHeight"); return roles; diff --git a/src/context/applets/currenttrack/package/contents/ui/main.qml b/src/context/applets/currenttrack/package/contents/ui/main.qml --- a/src/context/applets/currenttrack/package/contents/ui/main.qml +++ b/src/context/applets/currenttrack/package/contents/ui/main.qml @@ -99,7 +99,7 @@ id: emptyComponent AmarokQml.PixmapItem { - source: Svg.renderSvg("file://" + applet.packagePath + "images/amarok-currenttrack.svg", + source: Svg.renderSvg(applet.imageUrl("amarok-currenttrack.svg"), "CurrentTrack", width, height, diff --git a/src/context/context_qml_package/contents/ui/main.qml b/src/context/context_qml_package/contents/ui/main.qml --- a/src/context/context_qml_package/contents/ui/main.qml +++ b/src/context/context_qml_package/contents/ui/main.qml @@ -29,69 +29,80 @@ ColumnLayout { anchors.fill: parent - ListView { - id: appletListView + Flickable { + id: appletFlickable signal scrollToApplet(string id) Layout.alignment: Qt.AlignTop Layout.fillHeight: true Layout.fillWidth: true - spacing: Kirigami.Units.smallSpacing - displayMarginEnd: 100000 - displayMarginBeginning: 100000 - clip: true + contentWidth: scrollBar.visible ? width - scrollBar.width : width + contentHeight: appletColumn.height + flickableDirection: Flickable.VerticalFlick + focus: true - model: AppletProxyModel + Keys.onUpPressed: scrollBar.decrease() + Keys.onDownPressed: scrollBar.increase() ScrollBar.vertical: ScrollBar { id: scrollBar } - delegate: Loader { - width: scrollBar.visible ? parent.width - scrollBar.width : parent.width - active: true - asynchronous: true - - function initialize() { - setSource(mainscript, { - "name": name, - "appletId": appletId, - "iconSource": icon, - "collapsed": collapsed, - "contentHeight": contentHeight, - "packagePath": packagePath, - "configEnabled": Qt.binding(function() { return appletToolbar.configEnabled; } ) - }); - } + Column { + id: appletColumn + + width: parent.width + spacing: Kirigami.Units.smallSpacing + + Repeater { + model: AppletProxyModel + + delegate: Loader { + width: appletColumn.width + active: true + asynchronous: false + + function initialize() { + setSource(mainscript, { + "name": name, + "appletId": appletId, + "iconSource": icon, + "collapsed": collapsed, + "contentHeight": contentHeight, + "configEnabled": Qt.binding(function() { return appletToolbar.configEnabled; } ) + }); + } - Component.onCompleted: initialize() + Component.onCompleted: initialize() - onStatusChanged: { - if (status == Loader.Error) { - Context.error("Error loading applet: " + appletId); - Context.error(sourceComponent.errorString()); - } - if (status == Loader.Ready) { - Context.debug("Applet loaded: " + appletId); - } - } + onStatusChanged: { + if (status == Loader.Error) { + Context.error("Error loading applet: " + appletId); + Context.error(sourceComponent.errorString()); + } + if (status == Loader.Ready) { + Context.debug("Applet loaded: " + appletId); + } + } - Connections { - target: AppletProxyModel + Connections { + target: AppletProxyModel - onDataChanged: { - if (!!mainscript && mainscript != source) { - Context.debug("Data changed for applet " + appletId); - initialize(); + onDataChanged: { + if (!!mainscript && mainscript != source) { + Context.debug("Data changed for applet " + appletId); + initialize(); + } + } } - } - } - Connections { - target: appletListView - - onScrollToApplet: { - if (id == appletId) { - appletListView.positionViewAtIndex(index, ListView.Beginning); - Context.debug("Scroll to applet: " + appletId); + Connections { + target: appletFlickable + + onScrollToApplet: { + if (id == appletId) { + appletFlickable.contentY = y; + Context.debug("Scroll to applet: " + appletId); + } + } } } } @@ -109,7 +120,7 @@ contextRoot: root addItem: appletToolbarAddItem - listView: appletListView + flickable: appletFlickable Layout.alignment: Qt.AlignBottom Layout.fillWidth: true } diff --git a/src/context/context_qml_package/contents/ui/toolbar/AppletToolbar.qml b/src/context/context_qml_package/contents/ui/toolbar/AppletToolbar.qml --- a/src/context/context_qml_package/contents/ui/toolbar/AppletToolbar.qml +++ b/src/context/context_qml_package/contents/ui/toolbar/AppletToolbar.qml @@ -26,7 +26,7 @@ readonly property alias configEnabled: configureButton.checked property var addItem - property var listView + property var flickable property var contextRoot function resizeApplets() { @@ -102,7 +102,7 @@ "name": name, "appletId": appletId, "toolbar": root, - "listView": root.listView, + "flickable": root.flickable, "contextRoot": root.contextRoot }); } diff --git a/src/context/context_qml_package/contents/ui/toolbar/AppletToolbarAppletItem.qml b/src/context/context_qml_package/contents/ui/toolbar/AppletToolbarAppletItem.qml --- a/src/context/context_qml_package/contents/ui/toolbar/AppletToolbarAppletItem.qml +++ b/src/context/context_qml_package/contents/ui/toolbar/AppletToolbarAppletItem.qml @@ -26,7 +26,7 @@ property alias name: label.text property string appletId property var toolbar - property var listView + property var flickable property bool configEnabled: !!toolbar ? toolbar.configEnabled : false property bool held: false @@ -42,7 +42,7 @@ onPressAndHold: if (configEnabled) held = true onReleased: held = false - onPressed: if (!configEnabled) listView.scrollToApplet(appletId) + onPressed: if (!configEnabled) flickable.scrollToApplet(appletId) onImplicitWidthChanged: toolbar.resizeApplets() DropArea { diff --git a/src/context/qml_plugin/Applet.qml b/src/context/qml_plugin/Applet.qml --- a/src/context/qml_plugin/Applet.qml +++ b/src/context/qml_plugin/Applet.qml @@ -17,7 +17,6 @@ import QtQuick 2.4 import QtQuick.Dialogs 1.2 import org.kde.kirigami 2.0 as Kirigami -import org.kde.kirigami 2.0 as Kirigami Rectangle { @@ -27,7 +26,6 @@ property alias title: header.title property string name: "Nameless Applet" property string appletId - property string packagePath property url iconSource property bool collapsed: false property bool configEnabled: false