diff options
author | Andrea Diamantini <adjam7@gmail.com> | 2010-07-22 01:00:40 +0200 |
---|---|---|
committer | Andrea Diamantini <adjam7@gmail.com> | 2010-07-22 01:00:40 +0200 |
commit | bbab050a3b1c6a631aed8fdf5b0ab484378e0cef (patch) | |
tree | 10798d78258216ebdfabc8ba6c04b8034dc9dd4e /src/history | |
parent | Merge commit 'refs/merge-requests/152' of git://gitorious.org/rekonq/mainline (diff) | |
parent | fix suggestion type (diff) | |
download | rekonq-bbab050a3b1c6a631aed8fdf5b0ab484378e0cef.tar.xz |
Merge commit 'refs/merge-requests/153' of git://gitorious.org/rekonq/mainline into m153
Conflicts:
src/history/historymanager.cpp
src/history/historymanager.h
Diffstat (limited to 'src/history')
-rw-r--r-- | src/history/historymanager.cpp | 88 | ||||
-rw-r--r-- | src/history/historymanager.h | 39 |
2 files changed, 85 insertions, 42 deletions
diff --git a/src/history/historymanager.cpp b/src/history/historymanager.cpp index 13c3df24..966487a9 100644 --- a/src/history/historymanager.cpp +++ b/src/history/historymanager.cpp @@ -69,11 +69,8 @@ HistoryManager::HistoryManager(QObject *parent) , m_historyModel(0) , m_historyFilterModel(0) , m_historyTreeModel(0) - , m_completion(new AwesomeUrlCompletion) { kDebug() << "Loading HistoryManager..."; - // take care of the completion object - m_completion->setOrder(KCompletion::Weighted); m_expiredTimer.setSingleShot(true); connect(&m_expiredTimer, SIGNAL(timeout()), this, SLOT(checkForExpired())); @@ -95,7 +92,6 @@ HistoryManager::HistoryManager(QObject *parent) HistoryManager::~HistoryManager() { m_saveTimer->saveIfNeccessary(); - delete m_completion; delete m_saveTimer; @@ -113,7 +109,7 @@ QList<HistoryItem> HistoryManager::history() const bool HistoryManager::historyContains(const QString &url) const { - return m_historyFilterModel->historyContains(url); + return m_hash.contains(url) && m_hash[url].savedCount>0; } @@ -134,16 +130,11 @@ void HistoryManager::addHistoryEntry(const QString &url) HistoryItem item(cleanUrl.toString(), QDateTime::currentDateTime()); m_history.prepend(item); + addHistoryHashEntry(item); emit entryAdded(item); if (m_history.count() == 1) checkForExpired(); - - // Add item to completion object - QString _url(url); - _url.remove(QRegExp("^http://|/$")); - UrlSearchItem urlSearchItem(UrlSearchItem::History, _url, QString(), item.dateTime, 1, QString(), QString()); - m_completion->addItem(urlSearchItem); } @@ -151,6 +142,13 @@ void HistoryManager::setHistory(const QList<HistoryItem> &history, bool loadedAn { m_history = history; + //TODO: is there a way to really memorize the visitCount instead of recount it at startup ? + m_hash.clear(); + foreach(HistoryItem i, m_history) + { + addHistoryHashEntry(i); + } + // verify that it is sorted by date if (!loadedAndSorted) qSort(m_history.begin(), m_history.end()); @@ -222,6 +220,25 @@ void HistoryManager::checkForExpired() } +void HistoryManager::addHistoryHashEntry(const HistoryItem &item) +{ + if (m_hash.contains(item.url)) + { + m_hash[item.url].visitCount++; + m_hash[item.url].dateTime = item.dateTime; //store last visit date + if (!item.title.isEmpty()) + { + m_hash[item.url].title = item.title; //store last title if not empty + } + } + else + { + m_hash[item.url] = HistoryHashItem(item.url, item.dateTime, item.title); + } + m_hash[item.url].savedCount++; +} + + void HistoryManager::updateHistoryEntry(const KUrl &url, const QString &title) { for (int i = 0; i < m_history.count(); ++i) @@ -232,6 +249,11 @@ void HistoryManager::updateHistoryEntry(const KUrl &url, const QString &title) m_saveTimer->changeOccurred(); if (m_lastSavedUrl.isEmpty()) m_lastSavedUrl = m_history.at(i).url; + + if (m_hash.contains(url.url()) && !title.isEmpty()) + { + m_hash[url.url()].title = title; + } emit entryUpdated(i); break; } @@ -254,10 +276,29 @@ void HistoryManager::removeHistoryEntry(const KUrl &url, const QString &title) break; } } +} + - // Remove item from completion object - UrlSearchItem urlSearchItem(UrlSearchItem::History, item.url, item.title, item.dateTime, 0, QString(), QString()); - m_completion->removeItem(urlSearchItem); +HistoryHashItem HistoryManager::get(const QString &url) +{ + return m_hash[url]; +} + + +QList<HistoryHashItem> HistoryManager::find(const QString &text) +{ + QList<HistoryHashItem> list; + + QString url; + foreach(url, m_hash.keys()) + { + if (url.contains(text) || m_hash[url].title.contains(text)) + { + list << m_hash[url]; + } + } + + return list; } @@ -358,12 +399,6 @@ void HistoryManager::load() list.prepend(item); lastInsertedItem = item; - - // Add item to completion object - //QString _url = item.url; - //_url.remove(QRegExp("^http://|/$")); - UrlSearchItem urlSearchItem(UrlSearchItem::History, item.url, item.title, item.dateTime, 1, QString(), QString()); - m_completion->addItem(urlSearchItem); } if (needToSort) qSort(list.begin(), list.end()); @@ -445,16 +480,3 @@ void HistoryManager::save() } m_lastSavedUrl = m_history.value(0).url; } - - -AwesomeUrlCompletion * HistoryManager::completionObject() const -{ - return m_completion; -} - - -QString HistoryManager::titleForHistoryUrl(const QString &url) -{ - return history().at(m_historyFilterModel->historyLocation(url)).title; -} - diff --git a/src/history/historymanager.h b/src/history/historymanager.h index ce712919..85702b84 100644 --- a/src/history/historymanager.h +++ b/src/history/historymanager.h @@ -84,6 +84,32 @@ public: // --------------------------------------------------------------------------------------------------------------- +class HistoryHashItem : public HistoryItem +{ +public: + HistoryHashItem() {} + explicit HistoryHashItem(const QString &u + ,const QDateTime &d = QDateTime() + ,const QString &t = QString() + ) + : HistoryItem(u, d, t) + ,visitCount(1) + ,savedCount(0) + {} + + inline bool operator <(const HistoryHashItem &other) const + { + return visitCount > other.visitCount; + } + + int visitCount; + int savedCount; +}; + + +// --------------------------------------------------------------------------------------------------------------- + + // Forward Declarations class AutoSaver; class HistoryModel; @@ -115,7 +141,8 @@ public: void updateHistoryEntry(const KUrl &url, const QString &title); void removeHistoryEntry(const KUrl &url, const QString &title = QString()); - QString titleForHistoryUrl(const QString &url); + HistoryHashItem get(const QString &url); + QList<HistoryHashItem> find(const QString &text); int historyLimit() const; void setHistoryLimit(int limit); @@ -128,11 +155,6 @@ public: HistoryFilterModel *historyFilterModel() const; HistoryTreeModel *historyTreeModel() const; - /** - * @returns the AwesomeUrlCompletion object. - */ - AwesomeUrlCompletion *completionObject() const; - public slots: void clear(); void loadSettings(); @@ -142,20 +164,19 @@ private slots: void checkForExpired(); private: + void addHistoryHashEntry(const HistoryItem &item); void load(); AutoSaver *m_saveTimer; int m_historyLimit; QTimer m_expiredTimer; QList<HistoryItem> m_history; + QHash<QString, HistoryHashItem> m_hash; QString m_lastSavedUrl; HistoryModel *m_historyModel; HistoryFilterModel *m_historyFilterModel; HistoryTreeModel *m_historyTreeModel; - - // the completion object we sync with - AwesomeUrlCompletion *m_completion; }; |