00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef KONQ_HISTORY_H
00021
#define KONQ_HISTORY_H
00022
00023
#include <qdatastream.h>
00024
#include <qfile.h>
00025
#include <qptrlist.h>
00026
#include <qobject.h>
00027
#include <qmap.h>
00028
#include <qtimer.h>
00029
00030
#include <dcopobject.h>
00031
00032
#include <kcompletion.h>
00033
#include <kurl.h>
00034
#include <kparts/historyprovider.h>
00035
00036
#include "konq_historycomm.h"
00037
00038
class KCompletion;
00039
00040
00041
typedef QPtrList<KonqHistoryEntry> KonqBaseHistoryList;
00042
typedef QPtrListIterator<KonqHistoryEntry> KonqHistoryIterator;
00043
00044
class KonqHistoryList :
public KonqBaseHistoryList
00045 {
00046
public:
00052 KonqHistoryEntry * findEntry(
const KURL& url );
00053
00054
protected:
00058
virtual int compareItems( QPtrCollection::Item, QPtrCollection::Item );
00059 };
00060
00061
00063
00064
00072 class KonqHistoryManager :
public KParts::HistoryProvider,
00073
public KonqHistoryComm
00074 {
00075 Q_OBJECT
00076
00077
public:
00078
static KonqHistoryManager *kself() {
00079
return static_cast<KonqHistoryManager*>( KParts::HistoryProvider::self() );
00080 }
00081
00082
KonqHistoryManager( QObject *parent,
const char *name );
00083 ~
KonqHistoryManager();
00084
00092
void emitSetMaxCount( Q_UINT32 count );
00093
00103
void emitSetMaxAge( Q_UINT32 days );
00104
00111
void emitRemoveFromHistory(
const KURL& url );
00112
00119
void emitRemoveFromHistory(
const KURL::List& urls );
00120
00124 Q_UINT32
maxCount()
const {
return m_maxCount; }
00125
00129 Q_UINT32
maxAge()
const {
return m_maxAgeDays; }
00130
00148
void addPending(
const KURL& url,
const QString& typedURL = QString::null,
00149
const QString& title = QString::null );
00150
00154
void confirmPending(
const KURL& url,
00155
const QString& typedURL = QString::null,
00156
const QString& title = QString::null );
00157
00162
void removePending(
const KURL& url );
00163
00167 KCompletion *
completionObject()
const {
return m_pCompletion; }
00168
00173 const KonqHistoryList&
entries()
const {
return m_history; }
00174
00175
00182
virtual void insert(
const QString& );
00183
virtual void remove(
const QString& ) {}
00184
virtual void clear() {}
00185
00186
00187
public slots:
00191
bool loadHistory();
00192
00196
bool saveHistory();
00197
00203
void emitClear();
00204
00205
00206 signals:
00210
void loadingFinished();
00211
00215
void entryAdded(
const KonqHistoryEntry *entry );
00216
00222
void entryRemoved(
const KonqHistoryEntry *entry );
00223
00224
protected:
00229
void adjustSize();
00230
00235 inline bool isExpired( KonqHistoryEntry *entry ) {
00236
return (entry && m_maxAgeDays > 0 && entry->lastVisited <
00237 QDate::currentDate().addDays( -m_maxAgeDays ));
00238 }
00239
00243
void emitAddToHistory(
const KonqHistoryEntry& entry );
00244
00253
virtual void notifyHistoryEntry( KonqHistoryEntry e, QCString saveId );
00254
00259
virtual void notifyMaxCount( Q_UINT32 count, QCString saveId );
00260
00265
virtual void notifyMaxAge( Q_UINT32 days, QCString saveId );
00266
00270
virtual void notifyClear( QCString saveId );
00271
00276
virtual void notifyRemove( KURL url, QCString saveId );
00277
00282
virtual void notifyRemove( KURL::List urls, QCString saveId );
00283
00287
virtual QStringList
allURLs() const;
00288
00300
void addToHistory(
bool pending, const KURL& url,
00301 const QString& typedURL = QString::null,
00302 const QString& title = QString::null );
00303
00304
00310 virtual
bool filterOut( const KURL& url );
00311
00312
void addToUpdateList( const QString& url ) {
00313 m_updateURLs.append( url );
00314 m_updateTimer->start( 500,
true );
00315 }
00316
00322 QStringList
m_updateURLs;
00323
00324
private slots:
00329
void slotEmitUpdated();
00330
00331
private:
00335
bool isSenderOfBroadcast();
00336
00337
void clearPending();
00344 KonqHistoryEntry * findEntry(
const KURL& url );
00345
00350
bool loadFallback();
00351 KonqHistoryEntry * createFallbackEntry(
const QString& ) const;
00352
00353
void addToCompletion( const QString& url, const QString& typedURL,
int numberOfTimesVisited = 1 );
00354
void removeFromCompletion( const QString& url, const QString& typedURL );
00355
00356 QString m_filename;
00357 KonqHistoryList m_history;
00358
00365 QMap<QString,KonqHistoryEntry*> m_pending;
00366
00367 Q_UINT32 m_maxCount;
00368 Q_UINT32 m_maxAgeDays;
00369
00370 KCompletion *m_pCompletion;
00371
00376 QTimer *m_updateTimer;
00377
00378 static const Q_UINT32 s_historyVersion;
00379 };
00380
00381
00382 #endif