QString DumpRenderTree::dumpBackForwardList(QWebPage* page) { QWebHistory* history = page->history(); QString result; result.append(QLatin1String("\n============== Back Forward List ==============\n")); // FORMAT: // " (file test):fast/loader/resources/click-fragment-link.html **nav target**" // "curr-> (file test):fast/loader/resources/click-fragment-link.html#testfragment **nav target**" int maxItems = history->maximumItemCount(); foreach (const QWebHistoryItem item, history->backItems(maxItems)) { if (!item.isValid()) continue; result.append(dumpHistoryItem(item, 8, false)); } QWebHistoryItem item = history->currentItem(); if (item.isValid()) result.append(dumpHistoryItem(item, 8, true)); foreach (const QWebHistoryItem item, history->forwardItems(maxItems)) { if (!item.isValid()) continue; result.append(dumpHistoryItem(item, 8, false)); } result.append(QLatin1String("===============================================\n")); return result; }
void NavigationBar::aboutToShowHistoryNextMenu() { if (!m_menuForward || !m_window->weView()) { return; } m_menuForward->clear(); QWebHistory* history = m_window->weView()->history(); int curindex = history->currentItemIndex(); int count = 0; for (int i = curindex + 1; i < history->count(); i++) { QWebHistoryItem item = history->itemAt(i); if (item.isValid()) { QString title = titleForUrl(item.title(), item.url()); const QIcon icon = iconForPage(item.url(), IconProvider::standardIcon(QStyle::SP_ArrowForward)); Action* act = new Action(icon, title); act->setData(i); connect(act, SIGNAL(triggered()), this, SLOT(loadHistoryIndex())); connect(act, SIGNAL(ctrlTriggered()), this, SLOT(loadHistoryIndexInNewTab())); m_menuForward->addAction(act); } count++; if (count == 20) { break; } } m_menuForward->addSeparator(); m_menuForward->addAction(tr("Clear history"), this, SLOT(clearHistory())); }
void NavigationBar::aboutToShowHistoryBackMenu() { if (!m_menuBack || !p_QupZilla->weView()) { return; } m_menuBack->clear(); QWebHistory* history = p_QupZilla->weView()->history(); int curindex = history->currentItemIndex(); int count = 0; for (int i = curindex - 1; i >= 0; i--) { QWebHistoryItem item = history->itemAt(i); if (item.isValid()) { QString title = titleForUrl(item.title(), item.url()); const QIcon &icon = iconForPage(item.url(), qIconProvider->standardIcon(QStyle::SP_ArrowBack)); Action* act = new Action(icon, title); act->setData(i); connect(act, SIGNAL(triggered()), this, SLOT(goAtHistoryIndex())); connect(act, SIGNAL(middleClicked()), this, SLOT(goAtHistoryIndexInNewTab())); m_menuBack->addAction(act); } count++; if (count == 20) { break; } } m_menuBack->addSeparator(); m_menuBack->addAction(tr("Clear history"), this, SLOT(clearHistory())); }
void WebKitBrowserExtension::restoreState(QDataStream &stream) { KUrl u; QByteArray historyData; qint32 xOfs = -1, yOfs = -1, historyItemIndex = -1; stream >> u >> xOfs >> yOfs >> historyItemIndex >> historyData; QWebHistory* history = (view() ? view()->page()->history() : 0); if (history) { bool success = false; if (history->count() == 0) { // Handle restoration: crash recovery, tab close undo, session restore if (!historyData.isEmpty()) { historyData = qUncompress(historyData); // uncompress the history data... QBuffer buffer (&historyData); if (buffer.open(QIODevice::ReadOnly)) { QDataStream stream (&buffer); view()->page()->setProperty("HistoryNavigationLocked", true); stream >> *history; QWebHistoryItem currentItem (history->currentItem()); if (currentItem.isValid()) { if (currentItem.userData().isNull() && (xOfs != -1 || yOfs != -1)) { const QPoint scrollPos (xOfs, yOfs); currentItem.setUserData(scrollPos); } // NOTE 1: The following Konqueror specific workaround is necessary // because Konqueror only preserves information for the last visited // page. However, we save the entire history content in saveState and // and hence need to elimiate all but the current item here. // NOTE 2: This condition only applies when Konqueror is restored from // abnormal termination ; a crash and/or a session restoration. if (QCoreApplication::applicationName() == QLatin1String("konqueror")) { history->clear(); } //kDebug() << "Restoring URL:" << currentItem.url(); m_part->setProperty("NoEmitOpenUrlNotification", true); history->goToItem(currentItem); } } } success = (history->count() > 0); } else { // Handle navigation: back and forward button navigation.