on xenial help sign in
clean oauth query items from url comparisons
6800105Albert Astals Cid
plugins/Dash/DashAudioPlayer.qml+2−2
@@ -16,8 +16,8 @@
16
16
17pragma Singleton
17pragma Singleton
18import QtQuick 2.4
18import QtQuick 2.4
19−
20import QtMultimedia 5.0
19import QtMultimedia 5.0
20+import Dash 0.1
21
21
22QtObject {
22QtObject {
23 readonly property real progress: audio.position / audio.duration
23 readonly property real progress: audio.position / audio.duration
@@ -27,7 +27,7 @@ QtObject {
27 readonly property alias position: audio.position
27 readonly property alias position: audio.position
28
28
29 function isCurrentSource(source) {
29 function isCurrentSource(source) {
30− return source === audio.source && source != "";
30+ return source != "" && AudioUrlComparer.compare(source, audio.source);
31 }
31 }
32
32
33 function playSource(newSource) {
33 function playSource(newSource) {
plugins/Dash/plugin.cpp+35
@@ -24,6 +24,38 @@
24#include "verticaljournal.h"
24#include "verticaljournal.h"
25
25
26#include <QAbstractItemModel>
26#include <QAbstractItemModel>
27+#include <QUrlQuery>
28+
29+static QUrl oauthCleanedUrl(QUrl u)
30+{
31+ QUrlQuery q(u);
32+ q.removeQueryItem("oauth_nonce");
33+ q.removeQueryItem("oauth_timestamp");
34+ q.removeQueryItem("oauth_consumer_key");
35+ q.removeQueryItem("oauth_signature_method");
36+ q.removeQueryItem("oauth_version");
37+ q.removeQueryItem("oauth_signature");
38+ u.setQuery(q);
39+ return u;
40+}
41+
42+class AudioComparer : public QObject
43+{
44+ Q_OBJECT
45+public:
46+ Q_INVOKABLE bool compare(const QUrl &url1, const QUrl &url2)
47+ {
48+ return oauthCleanedUrl(url1) == oauthCleanedUrl(url2);
49+ }
50+};
51+
52+static QObject *audio_comparer_singleton_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
53+{
54+ Q_UNUSED(engine)
55+ Q_UNUSED(scriptEngine)
56+
57+ return new AudioComparer();
58+}
27
59
28void DashPlugin::registerTypes(const char *uri)
60void DashPlugin::registerTypes(const char *uri)
29{
61{
@@ -34,4 +66,7 @@ void DashPlugin::registerTypes(const char *uri)
34 qmlRegisterType<OrganicGrid>(uri, 0, 1, "OrganicGrid");
66 qmlRegisterType<OrganicGrid>(uri, 0, 1, "OrganicGrid");
35 qmlRegisterType<VerticalJournal>(uri, 0, 1, "VerticalJournal");
67 qmlRegisterType<VerticalJournal>(uri, 0, 1, "VerticalJournal");
36 qmlRegisterType<CroppedImageSizer>(uri, 0, 1, "CroppedImageSizer");
68 qmlRegisterType<CroppedImageSizer>(uri, 0, 1, "CroppedImageSizer");
69+ qmlRegisterSingletonType<AudioComparer>(uri, 0, 1, "AudioUrlComparer", audio_comparer_singleton_provider);
37}
70}
71+
72+#include "plugin.moc"