diff -r 000000000000 -r dd21522fd290 webengine/webkitutils/HistoryProvider/HistoryEntry.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/webkitutils/HistoryProvider/HistoryEntry.cpp Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,267 @@ +/* +* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Encapsulates all the necessary information for a single page +* to be able to re-display the page. +* History Entry objects are stored on the History Stack. +* +*/ + + + +// INCLUDE FILES +#include "historyentry.h" +#include +#include +#include + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// ========================== FUNCTIONS ========================= + +HistoryEntry* HistoryEntry::initWithUrlAndFormData( const TPtrC8& url, const TPtrC8& requestUrl, + TPtrC& formContentType, WebCore::FormData* formData, HistoryCallback* callback, TBool ifWmlType) +{ + HistoryEntry* entry = new HistoryEntry; + if (entry) { + entry->m_ifWmlMode = ifWmlType; + entry->m_requestUrl = requestUrl.Alloc(); + entry->m_responseUrl = url.Alloc(); + int offset = 0; + if (requestUrl.Find(_L8("http://")) == 0) { + offset = 7; + } + else if (requestUrl.Find(_L8("https://")) == 0) { + offset = 8; + } + entry->m_pageTitle = HBufC::New(requestUrl.Length() - offset); + if (entry->m_pageTitle) { + entry->m_pageTitle->Des().Copy(requestUrl.Mid(offset)); + } + entry->m_callback = callback; + entry->m_zoomLevel = 0; + entry->m_minZoomLevel = 0; + if (formData && formContentType.Length()) { + entry->m_postContentType = formContentType.Alloc(); + entry->m_formData = formData; + entry->m_callback->setUse(true, entry->m_formData); + } + + if (!entry->m_requestUrl || !entry->m_pageTitle || (formData && formContentType.Length() && !entry->m_postContentType)) { + delete entry; + entry = NULL; + } + } + return entry; +} + +/** +*/ +//void HistoryEntry::setRequestUrlL (const TDesC& requestUrl); + +/** +*/ +//void HistoryEntry::setResponseUrlL (const TDesC& responseUrl); + +/** +*/ +void HistoryEntry::setPosition (const TPoint& position) +{ + m_position.SetXY(position.iX, position.iY); +} + +/** +*/ +void HistoryEntry::setZoomLevel (int zoomLevel) +{ + m_zoomLevel = zoomLevel; +} +/** +*/ +void HistoryEntry::setMinZoomLevel (int zoomLevel) +{ + m_minZoomLevel = zoomLevel; +} + +/** +*/ +void HistoryEntry::setPageTitle(const TDesC& pageTitle) +{ + if (pageTitle.Length()) { + HBufC* title = m_pageTitle; + m_pageTitle = NULL; + m_pageTitle = pageTitle.Alloc(); + if (m_pageTitle) { + delete title; + } + else { + m_pageTitle = title; + } + } +} + +/** +*/ +void HistoryEntry::setActiveBoxId (int id) +{ + m_activeBoxId = id; +} + + +/** +*/ +//void HistoryEntry::addFormData (WebCore::FormData* formData); + +/** +*/ +//void HistoryEntry::setPostContentTypeL (TPtrC8 postContentType); + +void HistoryEntry::storeThumbnail(const CFbsBitmap* thumbnail, const TRect& area) +{ + delete m_thumbnail; + m_thumbnail = 0; + if (!m_thumbnailBuf) { + TRAP_IGNORE(m_thumbnailBuf = CBufFlat::NewL(4096)); + } + if (m_thumbnailBuf) { + RBufWriteStream stream(*m_thumbnailBuf); + TRAPD(err, thumbnail->ExternalizeRectangleL(stream, area)); + stream.Close(); + if (err) { + delete m_thumbnailBuf; + m_thumbnailBuf = 0; + } + } +} + +/** +*/ +CFbsBitmap* HistoryEntry::constructThumbnailL() +{ + if (!m_thumbnail && m_thumbnailBuf) { + m_thumbnail = new (ELeave) CFbsBitmap(); + RBufReadStream stream(*m_thumbnailBuf); + CleanupClosePushL(stream); + m_thumbnail->InternalizeL(stream); + CleanupStack::PopAndDestroy(); // stream + } + return m_thumbnail; +} + +/** +*/ +void HistoryEntry::deleteThumbnail() +{ + delete m_thumbnail; + m_thumbnail = NULL; +} + +/** +*/ +HistoryEntry::~HistoryEntry() +{ + delete m_requestUrl; + delete m_responseUrl; + delete m_pageTitle; + + if(m_formData) { + m_callback->setUse(false, m_formData); + } + delete m_thumbnail; + delete m_postContentType; + delete m_thumbnailBuf; +} + +/** +*/ +HistoryEntry::HistoryEntry() +{ + m_requestUrl = NULL;; + m_responseUrl = NULL; + m_pageTitle = NULL;; + m_position = TPoint(0,0); + m_activeBoxId = 0; + m_formData = NULL; + m_postContentType = NULL; + m_thumbnail = NULL; + m_creationTime.HomeTime(); + m_thumbnailBuf = NULL; + m_ifWmlMode = false; +} + + + + + + + + + + + +/* + +void HistoryEntry::SetRequestUrlL (const TDesC& aRequestUrl) + { + delete m_requestUrl; + m_requestUrl = NULL; + m_requestUrl = aRequestUrl.AllocL(); + } + +void HistoryEntry::SetResponseUrlL (const TDesC& aResponseUrl) + { + delete m_responseUrl; + m_responseUrl = NULL; + m_responseUrl = aResponseUrl.AllocL(); + } + + +void HistoryEntry::AddPostData (CPostDataParts* aPostData) + { + if(iPostData) + { + iPostData->Deref(); + } + iPostData = aPostData; + if(iPostData) + { + iPostData->Ref(); + } + } + + +void HistoryEntry::SetPostContentTypeL (TPtrC8 aPostContentType) + { + delete m_postContentType; + m_postContentType = NULL; + // + m_postContentType = HBufC::NewL( aPostContentType.Length() ); + m_postContentType->Des().Copy( aPostContentType ); + } + +*/ +// End of File