diff --git a/export/akregatorstorageexporter.cpp b/export/akregatorstorageexporter.cpp --- a/export/akregatorstorageexporter.cpp +++ b/export/akregatorstorageexporter.cpp @@ -229,9 +229,9 @@ Elements::instance.entry.writeStartElement(writer); Elements::instance.guid.write(guid, writer); - const uint published = storage->pubDate(guid); - if (published > 0) { - const QString pdStr = QDateTime::fromTime_t(published).toString(Qt::ISODate); + const QDateTime published = storage->pubDate(guid); + if (published.isValid()) { + const QString pdStr = published.toString(Qt::ISODate); Elements::instance.published.write(pdStr, writer); } diff --git a/interfaces/feedstorage.h b/interfaces/feedstorage.h --- a/interfaces/feedstorage.h +++ b/interfaces/feedstorage.h @@ -29,6 +29,7 @@ class QString; class QStringList; +class QDateTime; namespace Akregator { namespace Backend { @@ -75,8 +76,8 @@ virtual void setDeleted(const QString &guid) = 0; virtual QString link(const QString &guid) const = 0; virtual void setLink(const QString &guid, const QString &link) = 0; - virtual uint pubDate(const QString &guid) const = 0; - virtual void setPubDate(const QString &guid, uint pubdate) = 0; + virtual QDateTime pubDate(const QString &guid) const = 0; + virtual void setPubDate(const QString &guid, const QDateTime &pubdate) = 0; virtual int status(const QString &guid) const = 0; virtual void setStatus(const QString &guid, int status) = 0; virtual QString title(const QString &guid) const = 0; diff --git a/plugins/mk4storage/feedstoragemk4impl.h b/plugins/mk4storage/feedstoragemk4impl.h --- a/plugins/mk4storage/feedstoragemk4impl.h +++ b/plugins/mk4storage/feedstoragemk4impl.h @@ -62,8 +62,8 @@ void setDeleted(const QString &guid) override; QString link(const QString &guid) const override; void setLink(const QString &guid, const QString &link) override; - uint pubDate(const QString &guid) const override; - void setPubDate(const QString &guid, uint pubdate) override; + QDateTime pubDate(const QString &guid) const override; + void setPubDate(const QString &guid, const QDateTime &pubdate) override; int status(const QString &guid) const override; void setStatus(const QString &guid, int status) override; QString title(const QString &guid) const override; diff --git a/plugins/mk4storage/feedstoragemk4impl.cpp b/plugins/mk4storage/feedstoragemk4impl.cpp --- a/plugins/mk4storage/feedstoragemk4impl.cpp +++ b/plugins/mk4storage/feedstoragemk4impl.cpp @@ -32,6 +32,7 @@ #include +#include #include #include #include @@ -290,10 +291,10 @@ return findidx != -1 ? QString::fromLatin1(d->plink(d->archiveView.GetAt(findidx))) : QLatin1String(""); } -uint FeedStorageMK4Impl::pubDate(const QString &guid) const +QDateTime FeedStorageMK4Impl::pubDate(const QString &guid) const { int findidx = findArticle(guid); - return findidx != -1 ? d->ppubDate(d->archiveView.GetAt(findidx)) : 0; + return findidx != -1 ? QDateTime::fromTime_t(d->ppubDate(d->archiveView.GetAt(findidx))) : QDateTime(); } int FeedStorageMK4Impl::status(const QString &guid) const @@ -333,15 +334,15 @@ return findidx != -1 ? QString::fromUtf8(d->pcontent(d->archiveView.GetAt(findidx))) : QLatin1String(""); } -void FeedStorageMK4Impl::setPubDate(const QString &guid, uint pubdate) +void FeedStorageMK4Impl::setPubDate(const QString &guid, const QDateTime &pubdate) { int findidx = findArticle(guid); if (findidx == -1) { return; } c4_Row row; row = d->archiveView.GetAt(findidx); - d->ppubDate(row) = pubdate; + d->ppubDate(row) = pubdate.toTime_t(); d->archiveView.SetAt(findidx, row); markDirty(); } diff --git a/src/article.cpp b/src/article.cpp --- a/src/article.cpp +++ b/src/article.cpp @@ -170,7 +170,7 @@ , archive(archive_) , status(archive->status(guid)) , hash(archive->hash(guid)) - , pubDate(QDateTime::fromTime_t(archive->pubDate(guid))) + , pubDate(archive->pubDate(guid)) { } @@ -213,7 +213,7 @@ } else { pubDate = QDateTime::currentDateTime(); } - archive->setPubDate(guid, pubDate.toTime_t()); + archive->setPubDate(guid, pubDate); if (firstAuthor) { archive->setAuthorName(guid, firstAuthor->name()); archive->setAuthorUri(guid, firstAuthor->uri()); @@ -228,7 +228,7 @@ //archive->setComments(guid, article.comments()); if (hash != archive->hash(guid)) { //article is in archive, was it modified? // if yes, update - pubDate.setTime_t(archive->pubDate(guid)); + pubDate = archive->pubDate(guid); archive->setHash(guid, hash); QString title = article->title(); if (title.isEmpty()) { @@ -277,7 +277,7 @@ void Article::offsetPubDate(int secs) { d->pubDate = d->pubDate.addSecs(secs); - d->archive->setPubDate(d->guid, d->pubDate.toTime_t()); + d->archive->setPubDate(d->guid, d->pubDate); } void Article::setDeleted() diff --git a/src/dummystorage/feedstoragedummyimpl.h b/src/dummystorage/feedstoragedummyimpl.h --- a/src/dummystorage/feedstoragedummyimpl.h +++ b/src/dummystorage/feedstoragedummyimpl.h @@ -63,8 +63,8 @@ void setDeleted(const QString &guid) override; QString link(const QString &guid) const override; void setLink(const QString &guid, const QString &link) override; - uint pubDate(const QString &guid) const override; - void setPubDate(const QString &guid, uint pubdate) override; + QDateTime pubDate(const QString &guid) const override; + void setPubDate(const QString &guid, const QDateTime & pubdate) override; int status(const QString &guid) const override; void setStatus(const QString &guid, int status) override; QString title(const QString &guid) const override; diff --git a/src/dummystorage/feedstoragedummyimpl.cpp b/src/dummystorage/feedstoragedummyimpl.cpp --- a/src/dummystorage/feedstoragedummyimpl.cpp +++ b/src/dummystorage/feedstoragedummyimpl.cpp @@ -27,6 +27,7 @@ #include +#include #include #include #include @@ -43,7 +44,7 @@ public: Entry() : status(0) - , pubDate(0) + , pubDate() , hash(0) , guidIsHash(false) , guidIsPermaLink(false) @@ -64,7 +65,7 @@ int comments; int status; int enclosureLength; - uint pubDate; + QDateTime pubDate; uint hash; bool guidIsHash = false; bool guidIsPermaLink = false; @@ -205,9 +206,9 @@ return contains(guid) ? d->entries[guid].link : QString(); } -uint FeedStorageDummyImpl::pubDate(const QString &guid) const +QDateTime FeedStorageDummyImpl::pubDate(const QString &guid) const { - return contains(guid) ? d->entries[guid].pubDate : 0; + return contains(guid) ? d->entries[guid].pubDate : QDateTime(); } int FeedStorageDummyImpl::status(const QString &guid) const @@ -252,7 +253,7 @@ return contains(guid) ? d->entries[guid].authorEMail : QString(); } -void FeedStorageDummyImpl::setPubDate(const QString &guid, uint pubdate) +void FeedStorageDummyImpl::setPubDate(const QString &guid, const QDateTime &pubdate) { if (contains(guid)) { d->entries[guid].pubDate = pubdate;