File: history.cpp

package info (click to toggle)
kdebase 2%3A980312-8
  • links: PTS
  • area: contrib
  • in suites: hamm
  • size: 16,500 kB
  • ctags: 11,017
  • sloc: cpp: 77,278; ansic: 14,050; makefile: 2,643; sh: 2,151; perl: 844
file content (99 lines) | stat: -rw-r--r-- 1,559 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
//----------------------------------------------------------------------------
//
// Maintain a history of sites visited
//
// Copyright (c) 1997 The KDE project.
//

#include <config.h>
#include <qfile.h>
#include <qdstream.h>
#include "history.h"

KHistory::KHistory( const char *_file )
    : dict( 503 )
{
    dict.setAutoDelete( true );
    lifeTime = 30;

    filename = _file;
    loadHistory();
}

KHistory::~KHistory()
{
    saveHistory();
}

void KHistory::loadHistory()
{
    if ( filename.isEmpty() )
	return;

    dict.clear();
    QFile file( filename );

    if ( file.open( IO_ReadOnly ) )
    {
	QDate today = QDate::currentDate();
	QDataStream stream( &file );
	QString url = "";

	while ( !stream.eof() )
	{
	    stream >> url;

	    if ( url == "end" )
		break;

	    QDate *date = new QDate;
	    stream >> (*date);

	    if ( date->daysTo( today ) < lifeTime )
		dict.insert( url, date );
	    else
		delete date;
	}
    }
}

void KHistory::saveHistory()
{
    if ( filename.isEmpty() )
	return;

    QFile file( filename );

    if ( file.open( IO_WriteOnly ) )
    {
	QDataStream stream( &file );
	QDictIterator<QDate> it( dict );
	QString key;
	QDate *date;

	for ( ; it.currentKey(); ++it )
	{
	    key = it.currentKey();
	    stream << key;

	    date = it.current();
	    stream << *(date);
	}

	stream << QString( "end" );

	file.close();
    }
}

void KHistory::addURL( const char *_url )
{
    QDictIterator<QDate> it( dict );

    QDate *date = new QDate;
    *date = QDate::currentDate();

    dict.replace( _url, date );
}