kde-workspace/kioslave/mtp/filecache.cpp

79 lines
2.1 KiB
C++
Raw Normal View History

2014-11-19 01:03:24 +00:00
/*
Cache for recent files accessed.
Copyright (C) 2012 Philipp Schmidt <philschmidt@gmx.net>
This program 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 2 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "filecache.h"
#include "kio_mtp.h"
2014-11-19 01:03:24 +00:00
#include <KDebug>
#include <QTimer>
FileCache::FileCache(QObject* parent)
: QObject(parent)
2014-11-19 01:03:24 +00:00
{
}
uint32_t FileCache::queryPath(const QString& path, int timeToLive)
2014-11-19 01:03:24 +00:00
{
kDebug(KIO_MTP) << "Querying" << path;
QPair< QDateTime, uint32_t > item = cache.value(path);
2014-11-19 01:03:24 +00:00
if (item.second != 0) {
2014-11-19 01:03:24 +00:00
QDateTime dateTime = QDateTime::currentDateTime();
if (item.first > dateTime ) {
2014-11-19 01:03:24 +00:00
kDebug(KIO_MTP) << "Found item with ttl:" << item.first << "- now:" << dateTime;
item.first = dateTime.addSecs ( timeToLive );
kDebug(KIO_MTP) << "Reset item ttl:" << item.first;
cache.insert (path, item);
2014-11-19 01:03:24 +00:00
return item.second;
} else {
kDebug(KIO_MTP) << "Item too old (" << item.first << "), removed. Current Time:" << dateTime;
2014-11-19 01:03:24 +00:00
cache.remove(path);
2014-11-19 01:03:24 +00:00
return 0;
}
}
return 0;
}
void FileCache::addPath(const QString& path, uint32_t id, int timeToLive)
2014-11-19 01:03:24 +00:00
{
QDateTime dateTime = QDateTime::currentDateTime();
dateTime = dateTime.addSecs(timeToLive);
2014-11-19 01:03:24 +00:00
QPair< QDateTime, uint32_t > item (dateTime, id);
2014-11-19 01:03:24 +00:00
cache.insert(path, item);
2014-11-19 01:03:24 +00:00
}
void FileCache::removePath(const QString& path)
2014-11-19 01:03:24 +00:00
{
cache.remove(path);
2014-11-19 01:03:24 +00:00
}
2015-02-27 09:28:46 +00:00
#include "moc_filecache.cpp"