From d32a9badb2d87dca11bf2aa61d4db747f5bf364a Mon Sep 17 00:00:00 2001 From: "craig.p.drummond" Date: Thu, 21 Nov 2013 18:16:44 +0000 Subject: [PATCH] Only re-load favourites if filename changed --- models/streamsmodel.cpp | 15 ++++++++++++++- models/streamsmodel.h | 5 +++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/models/streamsmodel.cpp b/models/streamsmodel.cpp index 6a579bc71..da99b077f 100644 --- a/models/streamsmodel.cpp +++ b/models/streamsmodel.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #if QT_VERSION >= 0x050000 #include #endif @@ -61,6 +62,7 @@ K_GLOBAL_STATIC(StreamsModel, instance) #include #endif #include +#include #if defined ENABLE_MODEL_TEST #include "modeltest.h" @@ -840,6 +842,13 @@ bool StreamsModel::exportFavourites(const QString &fileName) return favourites->saveXml(fileName, true); } +void StreamsModel::reloadFavourites() +{ + if (favourites->lastFileName.isEmpty() || favourites->lastFileName!=getInternalFile() || favourites->lastFileName.startsWith("http://")) { + reload(favouritesIndex()); + } +} + bool StreamsModel::checkFavouritesWritable() { bool wasWriteable=favouritesIsWriteable; @@ -1171,6 +1180,7 @@ void StreamsModel::jobFinished() QList newItems; if (cat==favourites) { newItems=favourites->loadXml(job->actualJob()); + favourites->lastFileName=QString(); } else if (QLatin1String("http")==job->url().scheme()) { QString url=job->origUrl().toString(); if (constRadioTimeHost==job->origUrl().host()) { @@ -1830,7 +1840,10 @@ StreamsModel::Item * StreamsModel::parseSomaFmEntry(QXmlStreamReader &doc, Categ bool StreamsModel::loadFavourites(const QString &fileName, const QModelIndex &index, bool importing) { - QList newItems=favourites->loadXml(fileName, importing); + QList newItems=favourites->CategoryItem::loadXml(fileName, importing); + if (!importing) { + favourites->lastFileName=fileName; + } if (!newItems.isEmpty()) { beginInsertRows(index, favourites->children.count(), (favourites->children.count()+newItems.count())-1); diff --git a/models/streamsmodel.h b/models/streamsmodel.h index 6e23c665f..56fdda208 100644 --- a/models/streamsmodel.h +++ b/models/streamsmodel.h @@ -112,6 +112,7 @@ public: QList loadXml(QIODevice *dev, bool importing=false); bool isFavourites() const { return true; } bool canReload() const { return false; } + QString lastFileName; }; struct IceCastCategoryItem : public CategoryItem @@ -204,7 +205,7 @@ public: bool haveFavourites() const { return !favourites->children.isEmpty(); } bool isFavoritesWritable() { return favouritesIsWriteable; } bool checkFavouritesWritable(); - void reloadFavourites() { reload(favouritesIndex()); } + void reloadFavourites(); void removeFromFavourites(const QModelIndex &index); bool addToFavourites(const QString &url, const QString &name); QString favouritesNameForUrl(const QString &u); @@ -271,7 +272,7 @@ private: private: QMap jobs; CategoryItem *root; - CategoryItem *favourites; + FavouritesCategoryItem *favourites; CategoryItem *tuneIn; CategoryItem *shoutCast; CategoryItem *listenLive;