/*
Copyright (C) 2007 Trolltech ASA
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
This class provides all functionality needed for loading images, style sheets and html
pages from the web. It has a memory cache for these objects.
*/
#include "qwebpagehistory.h"
#include "qwebpagehistory_p.h"
#include "DeprecatedString.h"
#include "PlatformString.h"
#include "Image.h"
#include <QSharedData>
QWebHistoryItem::QWebHistoryItem(const QWebHistoryItem &other)
: d(other.d)
{
}
QWebHistoryItem &QWebHistoryItem::operator=(const QWebHistoryItem &other)
{
d = other.d;
return *this;
}
QWebHistoryItem::~QWebHistoryItem()
{
}
QUrl QWebHistoryItem::originalUrl() const
{
return QUrl(d->item->originalURL().url());
}
QUrl QWebHistoryItem::currentUrl() const
{
return QUrl(d->item->url().url());
}
QString QWebHistoryItem::title() const
{
return d->item->title();
}
QDateTime QWebHistoryItem::lastVisited() const
{
//FIXME : this will be wrong unless we correctly set lastVisitedTime ourselves
return QDateTime::fromTime_t((uint)d->item->lastVisitedTime());
}
QPixmap QWebHistoryItem::icon() const
{
return *d->item->icon()->getPixmap();
}
QWebHistoryItem::QWebHistoryItem(QWebHistoryItemPrivate *priv)
{
d = priv;
}
QWebPageHistory::QWebPageHistory(QWebPageHistoryPrivate *priv)
{
d = priv;
}
QWebPageHistory::QWebPageHistory(const QWebPageHistory &other)
{
d = other.d;
}
QWebPageHistory &QWebPageHistory::operator=(const QWebPageHistory &other)
{
d = other.d;
return *this;
}
QWebPageHistory::~QWebPageHistory()
{
}
void QWebPageHistory::clear()
{
RefPtr<WebCore::HistoryItem> current = d->lst->currentItem();
int capacity = d->lst->capacity();
d->lst->setCapacity(0);
d->lst->setCapacity(capacity);
d->lst->addItem(current.get());
d->lst->goToItem(current.get());
}
QList<QWebHistoryItem> QWebPageHistory::items() const
{
const WebCore::HistoryItemVector &items = d->lst->entries();
QList<QWebHistoryItem> ret;
for (int i = 0; i < items.size(); ++i) {
QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(items[i].get());
ret.append(QWebHistoryItem(priv));
}
return ret;
}
QList<QWebHistoryItem> QWebPageHistory::backItems(int maxItems) const
{
WebCore::HistoryItemVector items(maxItems);
d->lst->backListWithLimit(maxItems, items);
QList<QWebHistoryItem> ret;
for (int i = 0; i < items.size(); ++i) {
QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(items[i].get());
ret.append(QWebHistoryItem(priv));
}
return ret;
}
QList<QWebHistoryItem> QWebPageHistory::forwardItems(int maxItems) const
{
WebCore::HistoryItemVector items(maxItems);
d->lst->forwardListWithLimit(maxItems, items);
QList<QWebHistoryItem> ret;
for (int i = 0; i < items.size(); ++i) {
QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(items[i].get());
ret.append(QWebHistoryItem(priv));
}
return ret;
}
bool QWebPageHistory::canGoBack() const
{
return d->lst->backListCount() > 0;
}
bool QWebPageHistory::canGoForward() const
{
return d->lst->forwardListCount() > 0;
}
void QWebPageHistory::goBack()
{
d->lst->goBack();
}
void QWebPageHistory::goForward()
{
d->lst->goBack();
}
void QWebPageHistory::goToItem(QWebHistoryItem *item)
{
d->lst->goToItem(item->d->item);
}
QWebHistoryItem QWebPageHistory::backItem() const
{
WebCore::HistoryItem *i = d->lst->backItem();
QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(i);
return QWebHistoryItem(priv);
}
QWebHistoryItem QWebPageHistory::currentItem() const
{
WebCore::HistoryItem *i = d->lst->currentItem();
QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(i);
return QWebHistoryItem(priv);
}
QWebHistoryItem QWebPageHistory::forwardItem() const
{
WebCore::HistoryItem *i = d->lst->forwardItem();
QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(i);
return QWebHistoryItem(priv);
}
QWebHistoryItem QWebPageHistory::itemAtIndex(int i) const
{
WebCore::HistoryItem *item = d->lst->itemAtIndex(i);
QWebHistoryItemPrivate *priv = new QWebHistoryItemPrivate(item);
return QWebHistoryItem(priv);
}