2929#include " FrmWebBrowser.h"
3030#include " FrmPopup.h"
3131#include " CaptureFullPage.h"
32+ #include " HistoryListWidget.h"
3233
3334static Q_LOGGING_CATEGORY (log, " WebBrowser.Browser" )
3435CFrmWebBrowser::CFrmWebBrowser(CParameterWebBrowser *pPara, bool bMenuBar, QWidget *parent)
@@ -65,6 +66,7 @@ CFrmWebBrowser::CFrmWebBrowser(CParameterWebBrowser *pPara, bool bMenuBar, QWidg
6566 , m_pCaptureFulPage(nullptr )
6667 , m_pRecord(nullptr )
6768 , m_pMultimediaRecord(nullptr )
69+ , m_pHistoryDatabase(nullptr )
6870{
6971 qDebug (log) << Q_FUNC_INFO;
7072 bool check = false ;
@@ -227,6 +229,17 @@ CFrmWebBrowser::CFrmWebBrowser(CParameterWebBrowser *pPara, bool bMenuBar, QWidg
227229
228230 check = connect (&m_tmRecord, &QTimer::timeout, this , &CFrmWebBrowser::slotRecordTimeout);
229231 Q_ASSERT (check);
232+
233+ m_pHistoryDatabase = new CHistoryDatabase (this );
234+ if (m_pHistoryDatabase) {
235+ QString szDb = GetProfile ()->persistentStoragePath ()
236+ + QDir::separator () + " History.db" ;
237+ bool bRet = m_pHistoryDatabase->openDatabase (szDb);
238+ if (!bRet) {
239+ delete m_pHistoryDatabase;
240+ m_pHistoryDatabase = nullptr ;
241+ }
242+ }
230243}
231244
232245CFrmWebBrowser::~CFrmWebBrowser ()
@@ -343,10 +356,13 @@ void CFrmWebBrowser::SetConnect(CFrmWebView* pWeb)
343356 }
344357 });
345358 check = connect (pWeb, &QWebEngineView::urlChanged,
346- this , [&](const QUrl &url){
359+ this , [&](const QUrl &url) {
347360 CFrmWebView* pWeb = qobject_cast<CFrmWebView*>(sender ());
348361 if (IsCurrentView (pWeb))
349362 m_pUrlLineEdit->setText (url.toString ());
363+ if (m_pHistoryDatabase) {
364+ m_pHistoryDatabase->addHistoryEntry (url.toString (), " " );
365+ }
350366 });
351367 Q_ASSERT (check);
352368 check = connect (pWeb, &CFrmWebView::titleChanged,
@@ -359,6 +375,9 @@ void CFrmWebBrowser::SetConnect(CFrmWebView* pWeb)
359375 setWindowTitle (title);
360376 emit sigUpdateTitle ();
361377 }
378+ if (m_pHistoryDatabase) {
379+ m_pHistoryDatabase->addHistoryEntry (pWeb->url ().toString (), title);
380+ }
362381 });
363382 Q_ASSERT (check);
364383 check = connect (pWeb, &CFrmWebView::favIconChanged,
@@ -442,7 +461,16 @@ QWebEngineProfile* CFrmWebBrowser::GetProfile(bool offTheRecord)
442461 bool check = connect (m_profile.get (), &QWebEngineProfile::downloadRequested,
443462 &m_DownloadManager, &CFrmDownloadManager::slotDownloadRequested);
444463 Q_ASSERT (check);
464+ // m_profile->setPersistentCookiesPolicy(QWebEngineProfile::ForcePersistentCookies);
465+ // m_profile->setPersistentStoragePath(m_profile->cachePath() + QDir::separator() + "Persistent");
466+ // m_profile->setHttpCacheMaximumSize(50);
445467 qDebug (log) << " User agent:" << m_profile->httpUserAgent ()
468+ #if QT_VERSION > QT_VERSION_CHECK(6, 8, 0)
469+ // << "AllPermissions:" << m_profile->listAllPermissions()
470+ << " persistentPermissionsPolicy:" << m_profile->persistentPermissionsPolicy ()
471+ #endif
472+ << " persistentCookiesPolicy:" << m_profile->persistentCookiesPolicy ()
473+ << " httpCacheMaximumSize:" << m_profile->httpCacheMaximumSize ()
446474 << " Persistent path:" << m_profile->persistentStoragePath ()
447475 << " Cache path:" << m_profile->cachePath ()
448476 << " Storage name:" << m_profile->storageName ()
@@ -552,6 +580,17 @@ int CFrmWebBrowser::InitMenu(QMenu *pMenu)
552580 m_pStop->setEnabled (false );
553581 m_pStop->setShortcuts (QKeySequence::Cancel);
554582 m_pStop->setStatusTip (m_pStop->text ());
583+
584+ pMenu->addSeparator ();
585+ pMenu->addAction (tr (" History" ), this , [&](){
586+ CHistoryListWidget* pHistory = new CHistoryListWidget ();
587+ if (!pHistory) return ;
588+ pHistory->setAttribute (Qt::WA_DeleteOnClose);
589+ CFrmWebView* pWeb = CurrentView ();
590+ if (pWeb)
591+ pHistory->slotSetWebView (pWeb);
592+ pHistory->showNormal ();
593+ });
555594
556595 pMenu->addSeparator ();
557596 pMenu->addAction (m_pAddPage);
0 commit comments