~ubuntu-branches/ubuntu/precise/gwenview/precise-proposed

« back to all changes in this revision

Viewing changes to lib/timeutils.cpp

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2011-12-15 14:17:54 UTC
  • mto: This revision was merged to the branch mainline in revision 12.
  • Revision ID: package-import@ubuntu.com-20111215141754-z043hyx69dulbggf
Tags: upstream-4.7.90
Import upstream version 4.7.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// vim: set tabstop=4 shiftwidth=4 noexpandtab:
 
1
// vim: set tabstop=4 shiftwidth=4 expandtab:
2
2
/*
3
3
Gwenview: an image viewer
4
4
Copyright 2008 Aurélien Gâteau <agateau@kde.org>
31
31
#include <kfilemetainfo.h>
32
32
#include <kfilemetainfoitem.h>
33
33
 
34
 
namespace Gwenview {
 
34
namespace Gwenview
 
35
{
35
36
 
36
 
namespace TimeUtils {
 
37
namespace TimeUtils
 
38
{
37
39
 
38
40
struct CacheItem {
39
 
        KDateTime fileMTime;
40
 
        KDateTime realTime;
41
 
 
42
 
        void update(const KFileItem& fileItem) {
43
 
                KDateTime time = fileItem.time(KFileItem::ModificationTime);
44
 
                if (fileMTime == time) {
45
 
                        return;
46
 
                }
47
 
 
48
 
                fileMTime = time;
49
 
                const KFileMetaInfo info = fileItem.metaInfo();
50
 
                if (info.isValid()) {
51
 
                        const KFileMetaInfoItem& mii = info.item("http://www.semanticdesktop.org/ontologies/2007/01/19/nie#contentCreated");
52
 
                        KDateTime dt(mii.value().toDateTime(), KDateTime::LocalZone);
53
 
                        if (dt.isValid()) {
54
 
                                realTime = dt;
55
 
                                return;
56
 
                        }
57
 
                }
58
 
 
59
 
                realTime = time;
60
 
        }
 
41
    KDateTime fileMTime;
 
42
    KDateTime realTime;
 
43
 
 
44
    void update(const KFileItem& fileItem)
 
45
    {
 
46
        KDateTime time = fileItem.time(KFileItem::ModificationTime);
 
47
        if (fileMTime == time) {
 
48
            return;
 
49
        }
 
50
 
 
51
        fileMTime = time;
 
52
        const KFileMetaInfo info = fileItem.metaInfo();
 
53
        if (info.isValid()) {
 
54
            const KFileMetaInfoItem& mii = info.item("http://www.semanticdesktop.org/ontologies/2007/01/19/nie#contentCreated");
 
55
            KDateTime dt(mii.value().toDateTime(), KDateTime::LocalZone);
 
56
            if (dt.isValid()) {
 
57
                realTime = dt;
 
58
                return;
 
59
            }
 
60
        }
 
61
 
 
62
        realTime = time;
 
63
    }
61
64
};
62
65
 
63
66
typedef QHash<KUrl, CacheItem> Cache;
64
67
 
65
 
KDateTime dateTimeForFileItem(const KFileItem& fileItem) {
66
 
        static Cache cache;
67
 
        const KUrl url = fileItem.targetUrl();
68
 
 
69
 
        Cache::iterator it = cache.find(url);
70
 
        if (it == cache.end()) {
71
 
                it = cache.insert(url, CacheItem());
72
 
        }
73
 
 
74
 
        it.value().update(fileItem);
75
 
        return it.value().realTime;
 
68
KDateTime dateTimeForFileItem(const KFileItem& fileItem)
 
69
{
 
70
    static Cache cache;
 
71
    const KUrl url = fileItem.targetUrl();
 
72
 
 
73
    Cache::iterator it = cache.find(url);
 
74
    if (it == cache.end()) {
 
75
        it = cache.insert(url, CacheItem());
 
76
    }
 
77
 
 
78
    it.value().update(fileItem);
 
79
    return it.value().realTime;
76
80
}
77
81
 
78
82
} // namespace