Hello community,
here is the log from the commit of package liblastfm for openSUSE:Factory checked in at 2013-11-07 12:53:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/liblastfm (Old)
and /work/SRC/openSUSE:Factory/.liblastfm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "liblastfm"
Changes:
--------
--- /work/SRC/openSUSE:Factory/liblastfm/liblastfm.changes 2013-03-07 07:28:55.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.liblastfm.new/liblastfm.changes 2013-11-07 12:53:22.000000000 +0100
@@ -1,0 +2,7 @@
+Thu Nov 7 00:38:12 UTC 2013 - hrvoje.senjan@gmail.com
+
+- Update to 1.0.8:
+ * Bugfix release, no changelog provided
+ * Ability to build the library against Qt5 (disabled for now)
+
+-------------------------------------------------------------------
Old:
----
liblastfm-1.0.7.tar.gz
New:
----
liblastfm-1.0.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ liblastfm.spec ++++++
--- /var/tmp/diff_new_pack.zjVU7r/_old 2013-11-07 12:53:22.000000000 +0100
+++ /var/tmp/diff_new_pack.zjVU7r/_new 2013-11-07 12:53:22.000000000 +0100
@@ -20,7 +20,7 @@
%define _soversion 1
Name: liblastfm
-Version: 1.0.7
+Version: 1.0.8
Release: 0
Summary: A Qt C++ Library for the Last.fm Webservices
License: GPL-3.0+
@@ -66,7 +66,7 @@
%setup -q
%build
-%cmake_kde4 -d build
+%cmake_kde4 -d build -- -DBUILD_WITH_QT4=ON
%make_jobs
%install
++++++ liblastfm-1.0.7.tar.gz -> liblastfm-1.0.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/CMakeLists.txt new/liblastfm-1.0.8/CMakeLists.txt
--- old/liblastfm-1.0.7/CMakeLists.txt 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/CMakeLists.txt 2013-09-03 17:43:03.000000000 +0200
@@ -9,7 +9,7 @@
set(LASTFM_MAJOR_VERSION "1")
set(LASTFM_MINOR_VERSION "0")
-set(LASTFM_PATCH_VERSION "7")
+set(LASTFM_PATCH_VERSION "8")
set(LASTFM_VERSION_STRING "${LASTFM_MAJOR_VERSION}.${LASTFM_MINOR_VERSION}.${LASTFM_PATCH_VERSION}")
# options
@@ -26,9 +26,17 @@
# setup qt stuff
set(CMAKE_AUTOMOC ON)
-find_package(Qt5Core QUIET)
+
+option(BUILD_WITH_QT4 "Build liblastfm with Qt4 no matter if Qt5 was found" OFF)
+
+if( NOT BUILD_WITH_QT4 )
+ # try Qt5 first, and prefer that if found
+ find_package(Qt5Core QUIET)
+endif()
+
if(Qt5Core_DIR)
message(STATUS "Found Qt5! Please keep in mind, this is highly experimental and not our main development target..")
+ include_directories(${Qt5Core_INCLUDE_DIRS})
# macro(qt_wrap_ui)
# qt5_wrap_ui(${ARGN})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/README.md new/liblastfm-1.0.8/README.md
--- old/liblastfm-1.0.7/README.md 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/README.md 2013-09-03 17:43:03.000000000 +0200
@@ -23,7 +23,6 @@
Additionally, to build it you will need:
-* Ruby
* cmake
## Mac OS X
@@ -36,14 +35,14 @@
Do something like this:
- sudo apt-get install qt4-qmake pkg-config ruby g++ libqt4-dev cmake libfftw-dev libsamplerate0-dev
+ sudo apt-get install qt4-qmake pkg-config g++ libqt4-dev cmake libfftw-dev libsamplerate0-dev
Please note, we have only tested on Linux, but we think it'll work on all
varieties of UNIX. If it doesn't, report the bug to eartle on GitHub.
## Windows
-Install Ruby. Install Visual Studio 2008 or higher. Install Qt. Install the
+Install Visual Studio 2008 or higher. Install Qt. Install the
Windows Server 2003 Platform SDK r2:
http://www.microsoft.com/Downloads/details.aspx?FamilyID=484269e2-3b89-47e3-...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/CMakeLists.txt new/liblastfm-1.0.8/src/CMakeLists.txt
--- old/liblastfm-1.0.7/src/CMakeLists.txt 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/CMakeLists.txt 2013-09-03 17:43:03.000000000 +0200
@@ -35,6 +35,7 @@
RadioTuner.cpp
RadioStation.cpp
XmlQuery.cpp
+ Url.cpp
UrlBuilder.cpp
misc.cpp
Chart.cpp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/InternetConnectionMonitor.cpp new/liblastfm-1.0.8/src/InternetConnectionMonitor.cpp
--- old/liblastfm-1.0.7/src/InternetConnectionMonitor.cpp 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/InternetConnectionMonitor.cpp 2013-09-03 17:43:03.000000000 +0200
@@ -131,11 +131,11 @@
{
NetworkConnectionMonitor* ncm = 0;
-#ifdef Q_WS_X11
+#ifdef Q_OS_X11
ncm = new LNetworkConnectionMonitor( this );
-#elif defined(Q_WS_WIN) && ! defined __MINGW32__
+#elif defined(Q_OS_WIN) && ! defined __MINGW32__
ncm = new WNetworkConnectionMonitor( this );
-#elif defined(Q_WS_MAC)
+#elif defined(Q_OS_MAC)
ncm = new MNetworkConnectionMonitor( this );
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/NetworkAccessManager.cpp new/liblastfm-1.0.8/src/NetworkAccessManager.cpp
--- old/liblastfm-1.0.7/src/NetworkAccessManager.cpp 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/NetworkAccessManager.cpp 2013-09-03 17:43:03.000000000 +0200
@@ -23,6 +23,7 @@
#include "misc.h"
#include <QCoreApplication>
#include <QNetworkRequest>
+#include <QNetworkProxyQuery>
class NetworkAccessManagerPrivate
{
@@ -98,7 +99,7 @@
if ( d( this )->userProxy.type() != QNetworkProxy::DefaultProxy )
return d( this )->userProxy;
- QList<QNetworkProxy> proxies = QNetworkProxyFactory::systemProxyForQuery( request.url() );
+ QList<QNetworkProxy> proxies = QNetworkProxyFactory::systemProxyForQuery( QNetworkProxyQuery( request.url() ) );
return proxies[0];
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/NetworkAccessManager.h new/liblastfm-1.0.8/src/NetworkAccessManager.h
--- old/liblastfm-1.0.7/src/NetworkAccessManager.h 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/NetworkAccessManager.h 2013-09-03 17:43:03.000000000 +0200
@@ -34,7 +34,7 @@
{
Q_OBJECT
-#ifdef Q_WS_WIN
+#ifdef Q_OS_WIN
class InternetConnectionMonitor* m_monitor;
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/RadioTuner.cpp new/liblastfm-1.0.8/src/RadioTuner.cpp
--- old/liblastfm-1.0.7/src/RadioTuner.cpp 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/RadioTuner.cpp 2013-09-03 17:43:03.000000000 +0200
@@ -190,7 +190,7 @@
if ( lfm.parse( qobject_cast(sender()) ) )
{
- qDebug() << lfm;
+ qDebug() << "Tune successful!";
d->m_station.setTitle( lfm["station"]["name"].text() );
d->m_station.setUrl( lfm["station"]["url"].text() );
@@ -221,7 +221,7 @@
if ( lfm.parse( qobject_cast(sender()) ) )
{
- qDebug() << lfm;
+ qDebug() << "Get playlist successful!";
d->m_station.setTitle( lfm["playlist"]["title"].text() );
// we don't get the radio url in the playlist
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/ScrobbleCache.cpp new/liblastfm-1.0.8/src/ScrobbleCache.cpp
--- old/liblastfm-1.0.7/src/ScrobbleCache.cpp 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/ScrobbleCache.cpp 2013-09-03 17:43:03.000000000 +0200
@@ -148,10 +148,17 @@
int plays = track.extra( "playCount" ).toInt( &ok );
if ( !ok ) plays = 1;
- for ( int i = 0 ; i < plays ; ++i )
- d->m_tracks += track;
-
+ // Add the track that the app is sharing and set it's scrobble status
+ d->m_tracks += track;
MutableTrack( track ).setScrobbleStatus( Track::Cached );
+
+ // now add any duplicate plays as clones that are all 1 second apart
+ for ( int i = 1 ; i < plays ; ++i )
+ {
+ MutableTrack mt = MutableTrack( track.clone() );
+ mt.setTimeStamp( mt.timestamp().addSecs( -i ) );
+ d->m_tracks += mt;
+ }
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/Track.cpp new/liblastfm-1.0.8/src/Track.cpp
--- old/liblastfm-1.0.7/src/Track.cpp 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/Track.cpp 2013-09-03 17:43:03.000000000 +0200
@@ -100,15 +100,38 @@
return *this;
}
-
-class lastfm::TrackData : public QObject, public QSharedData
+class TrackObject : public QObject
{
Q_OBJECT
+public:
+ TrackObject( lastfm::TrackData& data ) : m_data( data ) {;}
+
+public:
+ void forceLoveToggled( bool love );
+ void forceScrobbleStatusChanged();
+ void forceCorrected( QString correction );
+
+private slots:
+ void onLoveFinished();
+ void onUnloveFinished();
+ void onGotInfo();
+
+signals:
+ void loveToggled( bool love );
+ void scrobbleStatusChanged( short scrobbleStatus );
+ void corrected( QString correction );
+
+private:
+ lastfm::TrackData& m_data;
+};
+
+class lastfm::TrackData : public QSharedData
+{
+ friend class TrackObject;
- friend class Track;
- friend class MutableTrack;
public:
TrackData();
+ ~TrackData();
public:
lastfm::Artist artist;
@@ -151,23 +174,11 @@
bool podcast;
bool video;
-private:
- void forceLoveToggled( bool love );
- void forceScrobbleStatusChanged();
- void forceCorrected( QString correction );
-
-private slots:
- void onLoveFinished();
- void onUnloveFinished();
- void onGotInfo();
-
-signals:
- void loveToggled( bool love );
- void scrobbleStatusChanged( short scrobbleStatus );
- void corrected( QString correction );
+ TrackObject* trackObject;
};
+
lastfm::TrackData::TrackData()
: trackNumber( 0 ),
duration( 0 ),
@@ -180,7 +191,14 @@
null( false ),
podcast( false ),
video( false )
-{}
+{
+ trackObject = new TrackObject( *this );
+}
+
+lastfm::TrackData::~TrackData()
+{
+ delete trackObject;
+}
lastfm::Track::Track()
:AbstractType()
@@ -266,45 +284,45 @@
}
void
-lastfm::TrackData::onLoveFinished()
+TrackObject::onLoveFinished()
{
- XmlQuery lfm;
+ lastfm::XmlQuery lfm;
if ( lfm.parse( static_cast(sender()) ) )
{
if ( lfm.attribute( "status" ) == "ok")
- loved = Track::Loved;
+ m_data.loved = lastfm::Track::Loved;
}
- emit loveToggled( loved == Track::Loved );
+ emit loveToggled( m_data.loved == lastfm::Track::Loved );
}
void
-lastfm::TrackData::onUnloveFinished()
+TrackObject::onUnloveFinished()
{
- XmlQuery lfm;
+ lastfm::XmlQuery lfm;
if ( lfm.parse( static_cast(sender()) ) )
{
if ( lfm.attribute( "status" ) == "ok")
- loved = Track::Unloved;
+ m_data.loved = lastfm::Track::Unloved;
}
- emit loveToggled( loved == Track::Loved );
+ emit loveToggled( m_data.loved == lastfm::Track::Loved );
}
void
-lastfm::TrackData::onGotInfo()
+TrackObject::onGotInfo()
{
- Observer observer;
+ lastfm::TrackData::Observer observer;
- for ( int i = 0 ; i < observers.count() ; ++i )
+ for ( int i = 0 ; i < m_data.observers.count() ; ++i )
{
- if ( observers.at( i ).reply == sender() )
+ if ( m_data.observers.at( i ).reply == sender() )
{
- observer = observers.takeAt( i );
+ observer = m_data.observers.takeAt( i );
break;
}
}
@@ -317,27 +335,25 @@
if ( lfm.parse( data ) )
{
- qDebug() << lfm;
-
QString imageUrl = lfm["track"]["image size=small"].text();
- if ( !imageUrl.isEmpty() ) m_images[AbstractType::SmallImage] = imageUrl;
+ if ( !imageUrl.isEmpty() ) m_data.m_images[lastfm::AbstractType::SmallImage] = imageUrl;
imageUrl = lfm["track"]["image size=medium"].text();
- if ( !imageUrl.isEmpty() ) m_images[AbstractType::MediumImage] = imageUrl;
+ if ( !imageUrl.isEmpty() ) m_data.m_images[lastfm::AbstractType::MediumImage] = imageUrl;
imageUrl = lfm["track"]["image size=large"].text();
- if ( !imageUrl.isEmpty() ) m_images[AbstractType::LargeImage] = imageUrl;
+ if ( !imageUrl.isEmpty() ) m_data.m_images[lastfm::AbstractType::LargeImage] = imageUrl;
imageUrl = lfm["track"]["image size=extralarge"].text();
- if ( !imageUrl.isEmpty() ) m_images[AbstractType::ExtraLargeImage] = imageUrl;
+ if ( !imageUrl.isEmpty() ) m_data.m_images[lastfm::AbstractType::ExtraLargeImage] = imageUrl;
imageUrl = lfm["track"]["image size=mega"].text();
- if ( !imageUrl.isEmpty() ) m_images[AbstractType::MegaImage] = imageUrl;
+ if ( !imageUrl.isEmpty() ) m_data.m_images[lastfm::AbstractType::MegaImage] = imageUrl;
if ( lfm["track"]["userloved"].text().length() > 0 )
- loved = lfm["track"]["userloved"].text() == "0" ? Track::Unloved : Track::Loved;
+ m_data.loved = lfm["track"]["userloved"].text() == "0" ? lastfm::Track::Unloved : lastfm::Track::Loved;
if ( observer.receiver )
if ( !QMetaObject::invokeMethod( observer.receiver, observer.method, Q_ARG(QByteArray, data) ) )
QMetaObject::invokeMethod( observer.receiver, observer.method );
- emit loveToggled( loved == Track::Loved );
+ emit loveToggled( m_data.loved == lastfm::Track::Loved );
}
else
{
@@ -348,19 +364,19 @@
}
void
-lastfm::TrackData::forceLoveToggled( bool love )
+TrackObject::forceLoveToggled( bool love )
{
emit loveToggled( love );
}
void
-lastfm::TrackData::forceScrobbleStatusChanged()
+TrackObject::forceScrobbleStatusChanged()
{
- emit scrobbleStatusChanged( scrobbleStatus );
+ emit scrobbleStatusChanged( m_data.scrobbleStatus );
}
void
-lastfm::TrackData::forceCorrected( QString correction )
+TrackObject::forceCorrected( QString correction )
{
emit corrected( correction );
}
@@ -377,6 +393,16 @@
{
}
+
+lastfm::Track
+lastfm::Track::clone() const
+{
+ Track clone = *this;
+ clone.d.detach();
+ return clone;
+}
+
+
QDomElement
lastfm::Track::toDomElement( QDomDocument& xml ) const
{
@@ -592,7 +618,7 @@
if ( lfm["track"]["userloved"].text().length() > 0)
d->loved = lfm["track"]["userloved"].text() == "0" ? Unloved : Loved;
- d->forceLoveToggled( d->loved == Loved );
+ d->trackObject->forceLoveToggled( d->loved == Loved );
}
void
@@ -713,8 +739,6 @@
// this is so the web services knows whether to use corrections or not
if (!lastfm::ws::SessionKey.isEmpty()) map["sk"] = lastfm::ws::SessionKey;
- qDebug() << map;
-
QNetworkReply* reply = ws::get( map );
TrackData::Observer observer;
@@ -723,7 +747,7 @@
observer.reply = reply;
d->observers << observer;
- QObject::connect( reply, SIGNAL(finished()), d.data(), SLOT(onGotInfo()));
+ QObject::connect( reply, SIGNAL(finished()), d->trackObject, SLOT(onGotInfo()));
}
@@ -794,8 +818,6 @@
if ( !album().isNull() ) map["album"] = album();
map["context"] = extra("playerId");
- qDebug() << map;
-
return ws::post(map);
}
@@ -805,8 +827,6 @@
QMap map;
map["method"] = "track.removeNowPlaying";
- qDebug() << map;
-
return ws::post(map);
}
@@ -822,8 +842,6 @@
if ( !d->album.title().isEmpty() ) map["album"] = d->album.title();
map["chosenByUser"] = source() == Track::LastFmRadio ? "0" : "1";
- qDebug() << map;
-
return ws::post(map);
}
@@ -846,8 +864,6 @@
map["chosenByUser[" + QString::number(i) + "]"] = tracks[i].source() == Track::LastFmRadio ? "0" : "1";
}
- qDebug() << map;
-
return ws::post(map);
}
@@ -891,7 +907,7 @@
const QObject*
lastfm::Track::signalProxy() const
{
- return d.data();
+ return d->trackObject;
}
bool
@@ -1029,7 +1045,7 @@
d->correctedAlbum = Album( artist, album );
d->correctedAlbumArtist = albumArtist;
- d->forceCorrected( toString() );
+ d->trackObject->forceCorrected( toString() );
}
lastfm::MutableTrack::MutableTrack()
@@ -1115,8 +1131,11 @@
void
lastfm::MutableTrack::setScrobbleStatus( ScrobbleStatus scrobbleStatus )
{
- d->scrobbleStatus = scrobbleStatus;
- d->forceScrobbleStatusChanged();
+ if ( scrobbleStatus != d->scrobbleStatus )
+ {
+ d->scrobbleStatus = scrobbleStatus;
+ d->trackObject->forceScrobbleStatusChanged();
+ }
}
void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/Track.h new/liblastfm-1.0.8/src/Track.h
--- old/liblastfm-1.0.7/src/Track.h 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/Track.h 2013-09-03 17:43:03.000000000 +0200
@@ -118,6 +118,8 @@
Track( const Track& that );
~Track();
+ Track clone() const;
+
/** this track and that track point to the same object, so they are the same
* in fact. This doesn't do a deep data comparison. So even if all the
* fields are the same it will return false if they aren't in fact spawned
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/Url.cpp new/liblastfm-1.0.8/src/Url.cpp
--- old/liblastfm-1.0.7/src/Url.cpp 1970-01-01 01:00:00.000000000 +0100
+++ new/liblastfm-1.0.8/src/Url.cpp 2013-09-03 17:43:03.000000000 +0200
@@ -0,0 +1,87 @@
+/*
+ Copyright 2009 Last.fm Ltd.
+ - Primarily authored by Max Howell, Jono Cole and Doug Mansell
+
+ This file is part of liblastfm.
+
+ liblastfm is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ liblastfm is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with liblastfm. If not, see http://www.gnu.org/licenses/.
+*/
+
+#include "Url.h"
+
+#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
+#include <QUrlQuery>
+#endif
+
+class lastfm::UrlPrivate
+{
+ public:
+ UrlPrivate( const QUrl& url );
+ QUrl url;
+#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
+ QUrlQuery query;
+#endif
+};
+
+lastfm::UrlPrivate::UrlPrivate( const QUrl& u )
+ : url( u )
+#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
+ , query( u.query() )
+#endif
+{
+}
+
+lastfm::Url::Url( const QUrl& url )
+ :d( new UrlPrivate( url ) )
+{
+}
+
+lastfm::Url::~Url()
+{
+ delete d;
+}
+
+void
+lastfm::Url::addQueryItem( const QString& key, const QString& value )
+{
+#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
+ d->query.addQueryItem( key, value );
+ d->url.setQuery( d->query );
+#else
+ d->url.addQueryItem( key, value );
+#endif
+}
+
+QUrl
+lastfm::Url::operator()()
+{
+ return url();
+}
+
+lastfm::Url&
+lastfm::Url::operator=( const lastfm::Url& that )
+{
+ d->url = that.d->url;
+#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
+ d->query = that.d->query;
+#endif
+ return *this;
+}
+
+
+QUrl
+lastfm::Url::url() const
+{
+ return d->url;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/Url.h new/liblastfm-1.0.8/src/Url.h
--- old/liblastfm-1.0.7/src/Url.h 1970-01-01 01:00:00.000000000 +0100
+++ new/liblastfm-1.0.8/src/Url.h 2013-09-03 17:43:03.000000000 +0200
@@ -0,0 +1,46 @@
+/*
+ Copyright 2009-2010 Last.fm Ltd.
+ - Primarily authored by Max Howell, Jono Cole, Doug Mansell and Michael Coffey
+
+ This file is part of liblastfm.
+
+ liblastfm is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ liblastfm is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with liblastfm. If not, see http://www.gnu.org/licenses/.
+*/
+#pragma once
+
+#include "global.h"
+
+#include <QUrl>
+
+
+namespace lastfm
+{
+ class LASTFM_DLLEXPORT Url
+ {
+ public:
+ explicit Url( const QUrl& url );
+ ~Url();
+
+ void addQueryItem( const QString& key, const QString& value );
+
+ QUrl url() const;
+
+ QUrl operator()();
+ Url& operator=( const Url& that );
+
+ private:
+ class UrlPrivate * const d;
+ };
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/fingerprint/CMakeLists.txt new/liblastfm-1.0.8/src/fingerprint/CMakeLists.txt
--- old/liblastfm-1.0.7/src/fingerprint/CMakeLists.txt 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/fingerprint/CMakeLists.txt 2013-09-03 17:43:03.000000000 +0200
@@ -1,5 +1,5 @@
-find_package(Qt4 COMPONENTS QtCore QtSql REQUIRED)
+#find_package(Qt4 COMPONENTS QtCore QtSql REQUIRED)
#FIXME: find modules are horrible, port them to find_package_handle_standard_args
find_package(LibSamplerate REQUIRED)
find_package(LibFFTW3 REQUIRED)
@@ -40,6 +40,8 @@
SOVERSION ${LASTFM_SOVERSION}
)
+qt5_use_modules(lastfm_fingerprint Network Sql Xml)
+
install(TARGETS lastfm_fingerprint
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/fingerprint/Fingerprint.cpp new/liblastfm-1.0.8/src/fingerprint/Fingerprint.cpp
--- old/liblastfm-1.0.7/src/fingerprint/Fingerprint.cpp 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/fingerprint/Fingerprint.cpp 2013-09-03 17:43:03.000000000 +0200
@@ -24,12 +24,16 @@
#include "Sha256.h"
#include "fplib/FingerprintExtractor.h"
#include "ws.h"
+#include "Url.h"
#include <QDebug>
#include <QFileInfo>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QStringList>
+#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
+ #include <QUrlQuery>
+#endif
#include <fstream>
#include "User.h"
@@ -248,6 +252,7 @@
return n ? QByteArray::number( n ) : "";
}
+
QNetworkReply*
lastfm::Fingerprint::submit() const
{
@@ -263,27 +268,25 @@
QString const path = t.url().toLocalFile();
QFileInfo const fi( path );
- #define e( x ) QUrl::toPercentEncoding( x )
- QUrl url( "http://ws.audioscrobbler.com/fingerprint/query/" );
- url.addEncodedQueryItem( "username", e(lastfm::User().name()) );
- url.addEncodedQueryItem( "artist", e(t.artist()) );
- url.addEncodedQueryItem( "album", e(t.album()) );
- url.addEncodedQueryItem( "track", e(t.title()) );
- url.addEncodedQueryItem( "duration", number( d->m_duration > 0 ? d->m_duration : t.duration() ) );
- url.addEncodedQueryItem( "mbid", e(t.mbid()) );
- url.addEncodedQueryItem( "filename", e(fi.completeBaseName()) );
- url.addEncodedQueryItem( "fileextension", e(fi.completeSuffix()) );
- url.addEncodedQueryItem( "tracknum", number( t.trackNumber() ) );
- url.addEncodedQueryItem( "sha256", sha256( path ).toAscii() );
- url.addEncodedQueryItem( "time", number(QDateTime::currentDateTime().toTime_t()) );
- url.addEncodedQueryItem( "fpversion", QByteArray::number((int)fingerprint::FingerprintExtractor::getVersion()) );
- url.addEncodedQueryItem( "fulldump", d->m_complete ? "true" : "false" );
- url.addEncodedQueryItem( "noupdate", "false" );
- #undef e
+ lastfm::Url url( QUrl( "http://ws.audioscrobbler.com/fingerprint/query/" ) );
+ url.addQueryItem( "username", lastfm::User().name() );
+ url.addQueryItem( "artist", t.artist() );
+ url.addQueryItem( "album", t.album() );
+ url.addQueryItem( "track", t.title() );
+ url.addQueryItem( "duration", number( d->m_duration > 0 ? d->m_duration : t.duration() ) );
+ url.addQueryItem( "mbid", t.mbid() );
+ url.addQueryItem( "filename", fi.completeBaseName() );
+ url.addQueryItem( "fileextension", fi.completeSuffix() );
+ url.addQueryItem( "tracknum", number( t.trackNumber() ) );
+ url.addQueryItem( "sha256", sha256( path ) );
+ url.addQueryItem( "time", number(QDateTime::currentDateTime().toTime_t()) );
+ url.addQueryItem( "fpversion", QByteArray::number((int)fingerprint::FingerprintExtractor::getVersion()) );
+ url.addQueryItem( "fulldump", d->m_complete ? "true" : "false" );
+ url.addQueryItem( "noupdate", "false" );
//FIXME: talk to mir about submitting fplibversion
- QNetworkRequest request( url );
+ QNetworkRequest request( url.url() );
request.setHeader( QNetworkRequest::ContentTypeHeader, "multipart/form-data; boundary=----------------------------8e61d618ca16" );
QByteArray bytes;
@@ -295,7 +298,7 @@
bytes += "\r\n";
bytes += "------------------------------8e61d618ca16--\r\n";
- qDebug() << url;
+ qDebug() << url.url();
qDebug() << "Fingerprint size:" << bytes.size() << "bytes";
return lastfm::nam()->post( request, bytes );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/mac/MNetworkConnectionMonitor.h new/liblastfm-1.0.8/src/mac/MNetworkConnectionMonitor.h
--- old/liblastfm-1.0.7/src/mac/MNetworkConnectionMonitor.h 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/mac/MNetworkConnectionMonitor.h 2013-09-03 17:43:03.000000000 +0200
@@ -23,7 +23,7 @@
#include "../NetworkConnectionMonitor.h"
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
#include //TODO remove
#include
#endif
@@ -42,7 +42,7 @@
private slots:
private:
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
static void callback( SCNetworkReachabilityRef target,
SCNetworkConnectionFlags flags,
void *info );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/mac/ProxyDict.h new/liblastfm-1.0.8/src/mac/ProxyDict.h
--- old/liblastfm-1.0.7/src/mac/ProxyDict.h 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/mac/ProxyDict.h 2013-09-03 17:43:03.000000000 +0200
@@ -19,7 +19,6 @@
*/
#include
-
struct ProxyDict
{
ProxyDict();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/misc.cpp new/liblastfm-1.0.8/src/misc.cpp
--- old/liblastfm-1.0.7/src/misc.cpp 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/misc.cpp 2013-09-03 17:43:03.000000000 +0200
@@ -27,7 +27,7 @@
#endif
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
#include
QDir
@@ -60,9 +60,9 @@
return QString::fromLocal8Bit( path );
}
return QDir::home();
-#elif defined(Q_WS_MAC)
+#elif defined(Q_OS_MAC)
return QDir::home().filePath( "Library/Application Support" );
-#elif defined(Q_WS_X11)
+#elif defined(Q_OS_X11)
return QDir::home().filePath( ".local/share" );
#else
return QDir::home();
@@ -80,7 +80,7 @@
QDir
lastfm::dir::logs()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
return QDir::home().filePath( "Library/Logs/Last.fm" );
#else
return runtimeData();
@@ -91,7 +91,7 @@
QDir
lastfm::dir::cache()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
return QDir::home().filePath( "Library/Caches/Last.fm" );
#else
return runtimeData().filePath( "cache" );
@@ -124,7 +124,7 @@
}
#endif
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
CFStringRef
lastfm::QStringToCFString( const QString &s )
{
@@ -159,7 +159,7 @@
const char*
lastfm::platform()
{
-#ifdef Q_WS_WIN
+#ifdef Q_OS_WIN
switch (QSysInfo::WindowsVersion)
{
case QSysInfo::WV_32s: return "Windows 3.1 with Win32s";
@@ -182,7 +182,7 @@
default: return "Unknown";
}
-#elif defined Q_WS_MAC
+#elif defined Q_OS_MAC
switch (QSysInfo::MacintoshVersion)
{
case QSysInfo::MV_Unknown: return "Unknown Mac";
@@ -199,7 +199,7 @@
default: return "Unknown";
}
-#elif defined Q_WS_X11
+#elif defined Q_OS_X11
return "UNIX X11";
#else
return "Unknown";
@@ -213,7 +213,7 @@
return QString::fromLatin1( digest.toHex() ).rightJustified( 32, '0' ).toLower();
}
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QString
lastfm::CFStringToQString( CFStringRef s )
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/misc.h new/liblastfm-1.0.8/src/misc.h
--- old/liblastfm-1.0.7/src/misc.h 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/misc.h 2013-09-03 17:43:03.000000000 +0200
@@ -23,7 +23,7 @@
#include "global.h"
#include <QDir>
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
typedef const struct __CFString* CFStringRef;
#endif
@@ -31,10 +31,10 @@
{
namespace dir
{
- #ifdef Q_WS_WIN
+ #ifdef Q_OS_WIN
LASTFM_DLLEXPORT QDir programFiles();
#endif
- #ifdef Q_WS_MAC
+ #ifdef Q_OS_MAC
LASTFM_DLLEXPORT QDir bundle();
#endif
LASTFM_DLLEXPORT QDir runtimeData();
@@ -42,7 +42,7 @@
LASTFM_DLLEXPORT QDir logs();
}
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
LASTFM_DLLEXPORT QByteArray CFStringToUtf8( CFStringRef );
LASTFM_DLLEXPORT CFStringRef QStringToCFString( const QString& );
LASTFM_DLLEXPORT QString CFStringToQString( CFStringRef s );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblastfm-1.0.7/src/ws.cpp new/liblastfm-1.0.8/src/ws.cpp
--- old/liblastfm-1.0.7/src/ws.cpp 2013-02-27 10:01:06.000000000 +0100
+++ new/liblastfm-1.0.8/src/ws.cpp 2013-09-03 17:43:03.000000000 +0200
@@ -20,6 +20,7 @@
#include "ws.h"
#include "misc.h"
#include "NetworkAccessManager.h"
+#include "Url.h"
#include <QCoreApplication>
#include <QDomDocument>
@@ -31,10 +32,6 @@
#include <QMutex>
#include <QSslSocket>
-#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
- #include <QUrlQuery>
-#endif
-
static lastfm::ws::Scheme theScheme = lastfm::ws::Http;
static QMap< QThread*, QNetworkAccessManager* > threadNamHash;
static QSet< QThread* > ourNamSet;
@@ -155,21 +152,17 @@
lastfm::ws::url( QMap params, bool sk )
{
lastfm::ws::sign( params, sk );
- QUrl url = ::baseUrl();
+ lastfm::Url url = lastfm::Url( ::baseUrl() );
// Qt setQueryItems doesn't encode a bunch of stuff, so we do it manually
QMapIterator i( params );
while (i.hasNext()) {
i.next();
- QByteArray const key = QUrl::toPercentEncoding( i.key() );
- QByteArray const value = QUrl::toPercentEncoding( i.value() );
-#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
- QUrlQuery(url).addQueryItem( key, value );
-#else
- url.addEncodedQueryItem( key, value );
-#endif
+ QString const key = i.key();
+ QString const value = i.value();
+ url.addQueryItem( key, value );
}
- return url;
+ return url.url();
}
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org