Unity 8
plugin.cpp
1 /*
2  * Copyright (C) 2013 Canonical, Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  */
17 
18 #include "plugin.h"
19 
20 #include "horizontaljournal.h"
21 #include "listviewwithpageheader.h"
22 #include "organicgrid.h"
23 #include "verticaljournal.h"
24 
25 #include <QAbstractItemModel>
26 #include <QUrlQuery>
27 
28 static QUrl oauthCleanedUrl(QUrl u)
29 {
30  QUrlQuery q(u);
31  q.removeQueryItem(QStringLiteral("oauth_nonce"));
32  q.removeQueryItem(QStringLiteral("oauth_timestamp"));
33  q.removeQueryItem(QStringLiteral("oauth_consumer_key"));
34  q.removeQueryItem(QStringLiteral("oauth_signature_method"));
35  q.removeQueryItem(QStringLiteral("oauth_version"));
36  q.removeQueryItem(QStringLiteral("oauth_signature"));
37  u.setQuery(q);
38  return u;
39 }
40 
41 class AudioComparer : public QObject
42 {
43  Q_OBJECT
44 public:
45  Q_INVOKABLE bool compare(const QUrl &url1, const QUrl &url2)
46  {
47  return oauthCleanedUrl(url1) == oauthCleanedUrl(url2);
48  }
49 };
50 
51 static QObject *audio_comparer_singleton_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
52 {
53  Q_UNUSED(engine)
54  Q_UNUSED(scriptEngine)
55 
56  return new AudioComparer();
57 }
58 
59 void DashPlugin::registerTypes(const char *uri)
60 {
61  Q_ASSERT(uri == QLatin1String("Dash"));
62  qmlRegisterType<QAbstractItemModel>();
63  qmlRegisterType<HorizontalJournal>(uri, 0, 1, "HorizontalJournal");
64  qmlRegisterType<ListViewWithPageHeader>(uri, 0, 1, "ListViewWithPageHeader");
65  qmlRegisterType<OrganicGrid>(uri, 0, 1, "OrganicGrid");
66  qmlRegisterType<VerticalJournal>(uri, 0, 1, "VerticalJournal");
67  qmlRegisterSingletonType<AudioComparer>(uri, 0, 1, "AudioUrlComparer", audio_comparer_singleton_provider);
68 }
69 
70 #include "plugin.moc"